我认为我的脚本停止了,因为它将要显示的文本包含“命令”
显示字幕文件前 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>
我怀疑是 < >^ 字符把事情搞砸了,因为所有“正常”文本都可以正常工作,没有任何问题。
无论如何要解决这个问题吗?
我之前得到的建议是:
printf -v junknownsub '%q' $(head -n20 "$f")
但这只会冻结尼莫
答案1
显示的一些对话框GNOME Zenity支持Pango标记语言并默认在对话框文本中解释它。zenity
正在将示例中的文本解析为无效的 pango 标记。这不是外壳问题。
为了防止这种情况,您可以:
- 使用该
--no-markup
选项。缺点是,标记将按字面显示,包括\n
用于格式化对话框文本的序列。 - 预处理字幕文本以删除标记。