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

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

ユーザー入力に基づいて変数を設定しようとしています。ユーザーにプロンプ​​トを表示するように構成したものは、「ボタンが返されました: はい」または「ボタンが返されました: いいえ」のいずれかで応答することがわかっています。

ボタンが「はい」を返す場合は変数を「True」に設定し、ボタンが「いいえ」を返す場合は変数を「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 "、テストは期待どおりに動作しません。

関連情報