osascriptを使用してBash変数を設定することは常に正しくありません。

osascriptを使用してBash変数を設定することは常に正しくありません。

ユーザー入力に基づいて変数を設定しようとしています。ユーザーが「ボタンを返す:はい」または「ボタンを返す:いいえ」として応答するように設定したことを知っています。

ボタンが「はい」を返す場合は、変数を「True」に設定したいと思います。ボタンが「No」を返す場合は「False」を返します。

これが私が今まで持っているものです:

response="button returned:yes"
var=`/usr/bin/osascript -e 'display dialog "Is a reboot required?" buttons {No,Yes}'`
/bin/test "$response" = "$var" && reboot="True" || reboot="False"

私は何が間違っていましたか?ユーザー入力に関係なく、$ reboot変数は常にfalseに設定されます。これはmacOSシステムで実行するように設計されたbashスクリプトです。

答え1

スクリプトのコピーの末尾に次の行を追加します。

echo "r: '$response'; v: '$var'; b: '$reboot'"

次の出力を提供します。

r: 'button returned:yes'; v: 'button returned:yes '; b: 'False'

osascript出力にスペースが追加されているように見え、"string"不平等が原因で"string "テストは期待どおりに実行されません。

関連情報