防止 < > ^ 字符泄漏出变量

防止 < > ^ 字符泄漏出变量

我认为我的脚本停止了,因为它将要显示的文本包含“命令”

显示字幕文件前 20 行的代码:

junknownsub=$(head -20 "$f")
zenity --question  --text="$jsubtitle\n\nIs this English?\n\n$junknownsub"  --width=200 --height=200

这是正文:

0
00:00:00,000 --> 00:00:18,338
<b><font color="#909090">^.^.^.^.movie .^.^.^.^</font></b>
<b><font color="#804040">®</font></b> <b><font color=#ff0000> </font></b> <b><font color="#804040">®</font></b>

这导致linux弹出这个问题:弹出窗口

我怀疑是 < >^ 字符把事情搞砸了,因为所有“正常”文本都可以正常工作,没有任何问题。

无论如何要解决这个问题吗?

我之前得到的建议是: printf -v junknownsub '%q' $(head -n20 "$f") 但这只会冻结尼莫

答案1

显示的一些对话框GNOME Zenity支持Pango标记语言并默认在对话框文本中解释它。zenity正在将示例中的文本解析为无效的 pango 标记。这不是外壳问题。

为了防止这种情况,您可以:

  • 使用该--no-markup选项。缺点是,标记将按字面显示,包括\n用于格式化对话框文本的序列。
  • 预处理字幕文本以删除标记。

相关内容