5

シェル スクリプトで AppleScript を実行できるようにする必要があります。ダイアログなどがサポートされるように、インタラクティブモードにするために「AppleScript Runner」を使用しています。動作していますが、AppleScript Runner アプリの終了ステータスをシェルに戻す必要があるため、スクリプトにエラーがあったかどうかを確認できます。

これが私のシェルスクリプトです:

output=$(/usr/bin/osascript << EOT
tell application "AppleScript Runner"
do script "somescript.scpt"
end
EOT)

status=$?

ここで、変数 $status は osascript コマンドの終了ステータス (somescript.scpt が実際に正常に実行されたかどうかにかかわらず 0 になります) のみで終了し、アプリ AppleScript Runner の終了ステータスではありません。

これを達成する方法を知っている人はいますか?

ありがとう!

4

1 に答える 1

2

-e フラグはエラーを stderr に出力します。これがデフォルトです。したがって、stderr を読み取るだけです。

あなたがそれに慣れていない場合、この答えはあなたを助けるかもしれません:

bash変数はstderrとstdoutを別々にキャプチャするか、終了値を取得します

編集: サンプル コードを追加しました。

error=`osascript -e 'tell app "Finder" to adtivate' 2>&1`
echo $error

私のシステムの上記はエラーメッセージをキャプチャします。

于 2011-04-11T19:42:56.827 に答える