な、る、ほ、ど、です。シノバー さんが書きました:IFSはシェル変数で、区切り符号ですね。それを変更してるのか、デフォルトにしてるのか?その上で gtkdialog3の標準出力を一行ずつ eval で評価してますね。
ここは for を使わず、単純に次の1行でOKです。上記コードは gtkdialog3の出力が 「変数=値」の羅列であることを前提にしています。コード: 全て選択
eval $(gtkdialog3 --program=MAIN_DIALOG --center )
そうでない出力が出るような使い方では、もう少していねいにフィルタを掛けると良いかもしれません。たとえばgtkdialog3の出力を使わない場合(どのボタンが押されたか知る必要がない場合)はもっと単純にコード: 全て選択
eval $(gtkdialog3 --program=MAIN_DIALOG --center| grep '^EXIT=' )
コード: 全て選択
gtkdialog3 --program=MAIN_DIALOG --center >/dev/null
IFSとeval コマンドの使い方がイマイチ分からなかったのですが、シノバーさんの解説で少しは実感が湧いてきました
参考:僕の持ってるシェルスクリプトのリファレンス本から
・eval
一般に、シェルは入力されたコマンドやその引数に対して、パラメータ展開やコマンド置換などの各種解釈を行った上で実際にコマンドを実行します。eval コマンドは、evalコマンドに渡された引数に対して、再度パラメータ展開やコマンド置換などの解釈を行い、その結果のコマンドを実行します。シェルがeval コマンドを実行する時点では、引数は一度解釈されているため、evalコマンドを使うと、結果的に引数の解釈が二回行われることになります。