【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される様です
Comments