私のスクリプトでは、メニュー ダイアログに入力するために、ダイアログ プログラムの入力ソースとして使用するファイルを作成しました。
このファイルでは、すべての行に番号とメニュー タイトルが含まれています。
INPUT=""
rm result
while read LINE
do
case $LINE in
'/ >'*|---*|'/ > '*)
continue;;
esac
# echo "1 $LINE "
echo -n " 1 \"$LINE\"" >>result
done < tmpfile
#printf "%s " $INPUT
DIALOG --menu "Latest news " 20 50 30 `cat result`
DIALOG は関数であり、これがソースです。
DIALOG () {
dialog --backtitle "$TITLE" "$@"
return $?
}
ダイアログのすべてのメニュー項目には、識別子 (私の例では番号) とラベル (複数の単語の場合は二重引用符 " の間) が必要です。
問題は、ファイルの内容が正しい形式であっても、次のようになることです。
1 "item number 1" 2 "item number 2" ...
ダイアログ コマンドは \" をラベル区切り文字として認識しませんが、それを文字列の一部と見なすため、すべての単語にメニュー ボイスがあるメニューがめちゃくちゃになります。
しかし、同じファイルの内容を (スクリプトを使用せずに) シェル コマンドに直接コピー アンド ペーストしようとすると、メニューが正しく表示されます。
何か案が?