【Applescript】display dialog で Cancel が押された時と 何も入力しなかった時の処理の分岐

Applescript で display dialogを使って文字入力をさせた時、キャンセルの場合は ブランクを返すようにして、シェルに返していたのですが、何も入力しなくてもよいようなケースがあった場合、キャンセルと空白の区別ができないことに気づきました。

ただ、

input=`osascript -e 'try' -e 'display dialog "input password"' -e 'set is to text returned of the result' -e 'on error number -128' -e 'set is to ""' -e 'end try'`
if [ -z "$input" ]; then
// input が空かキャンセル
else
//本来の処理
fi

の様になってるので、環境変数にnull を渡して「定義されていない」という事はできそうにありません

そこで、【本来入力できないようなもじれつを渡す方法】で対応する方法を考えてみました

input=`osascript -e 'try' -e 'display dialog "input password"' -e 'set is to text returned of the result' -e 'on error number -128' -e 'set is to "\\nblank\\r"' -e 'end try'`
if [ "$input" = $'\nblank\r' ]; then
//キャンセルされた
else
//本来の処理
fi

これなら、ブランクの入力も、正規の処理として実行できるようです ・ω・

ちなみにon error number -128 は、User Interface でキャンセルされた時に入る割り込み処理です

※末尾に "\n"があると Trimされる様です

おすすめ

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です