Shell-Script
防止 < > ^ 字元洩漏出變數
我認為我的腳本停止了,因為它即將顯示的文本包含“命令”
顯示字幕文件前 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")
但這只會凍結尼莫
GNOME Zenity顯示的一些對話框支持pango 標記語言,預設情況下,在對話框文本中解釋它。
zenity
正在將範例中的文本解析為無效的 pango 標記。這不是外殼問題。為了防止這種情況,您可以:
- 使用該
--no-markup
選項。不利的一面是,標記將按字面顯示,包括\n
您用於格式化對話框文本的序列。- 預處理您的字幕文本以刪除標記。