bashスクリプトで会話ベースの意思決定は可能ですか?

bashスクリプトで会話ベースの意思決定は可能ですか?

いくつかのGUIの問題に応じて、さまざまなタスクを実行する小さなbashスクリプトを作成しようとしています。

私が今いるところは次のとおりです。

[Timomey@timomeyswetab ~]$ TEST=`zenity --question`; echo test=$TEST
test=
[Timomey@timomeyswetab ~]$ TEST=`zenity --question`; echo test=$TEST
test=
[Timomey@timomeyswetab ~]$ 

問題は、期待どおりに機能しないことです。 TEST変数にわずかな違いがあるはずですが、まったく見えません。私は何が間違っていましたか?

ありがとう

答え1

zenity選択結果は標準出力に書き込まれません。コマンドラインから実行して自分で試してください。

$ zenity --question
$

ご覧のとおり、何も表示されないため、TEST変数は空です。

代わりにzenity返される値--questionは終了状態です。これは$?内部変数を通して(bashで)見ることができます。

$ zenity --question

「いいえ」ボタンを選択します。

$ echo $?
$ 1

マニュアルページに記載されているように、0は「はい」を意味し、1は「いいえ」を意味し、5はコマンドがタイムアウトしたことを意味します。

したがって、あなたのコマンドは次のようになります。

$ zenity --question; echo test=$?
$ test=1

コマンドごとにzenity動作が異なります。マニュアルページで説明するように、--entryコマンドは出力を std-out に送信します。

$ zenity --entry
$ Test 1..2..3..

したがって、テストではこの特定のコマンドを使用します。

関連情報