< > ^ 文字が変数から漏れるのを防ぎます。

< > ^ 文字が変数から漏れるのを防ぎます。

表示したいテキストに「コマンド」が含まれており、スクリプトが停止しているようです。

字幕ファイルの最初の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") しかし、これはNemoを停止させるだけです。

答え1

いくつかのダイアログボックスが表示されるGNOMEジェニティサポートするPango マークアップ言語デフォルトでは、ダイアログボックスのテキストから解釈されます。zenity例のテキストが無効なパンゴタグで解析されています。これはシェルの問題ではありません。

これを防ぐには、次のようにします。

  • この--no-markupオプションを使用してください。欠点は、\nダイアログボックスのテキストをフォーマットするために使用される順序を含むマークアップが文字通り表示されることです。
  • マーカーを削除するために字幕テキストを前処理します。

関連情報