質問: applescriptでunixコマンドの不明点 いつもお世話になってます スクリーンショットを撮るのにシェルスクリプトを使用しています 以下のスクリプトです #!/bin/bash screencapture -iws 0.png sips -s format jpeg 0.png --out ~/desktop/ss`date +%h%m%s`.jpeg rm 0.png これをapplescriptで利用したく思いスクリプトエディタで記述しました do shell script "screencapture -iws 0.png; sips -s format jpeg 0.png --out ~/desktop/ss`date +%h%m%s`.jpeg; rm 0.png" これでスクリーンショットを撮る分には問題ありませんが applescript実行後スクリンショット確定前にescでキャンセルすると 下記applescriptエラーとなってしまいます warning: 0.png not a valid file - skipping error 4: no file was specified try 'sips --help' for help using this tool 想像するにapplescriptの改行が解らないので[;]の部分が間違ってるのかな?とそうぞうしているのですが スクリプト初心者のため何が悪いのか解りません シェルスクリプトのままで良いじゃないと思われるかも知れませんが、xcodeでgui化したいのでapplescriptにと考えています 原因を解決法をご教授よろしくお願いします
回答: このシェルスクリプトは スクリーンキャプチャ→フォーマットをpngからjpgに変換して保存→ 元のpngファイルを削除ということですよね。 で、スクリーンキャプチャ確定前にescにてキャンセルすると エラーがでるってことですよね。 このエラーは0.pngというファイルがないから フォーマット変換できないよって事では? キャプチャキャンセルした訳だからそのあとの処理はいらないですよね。 ということで、tryを使用します。 簡単に書くとこんな感じです。 try do shell script "screencapture -iws 0.png; sips -s format jpeg 0.png --out ~/desktop/ss`date +%h%m%s`.jpeg; rm 0.png" end try これでシェルスクリプト内でエラーが起きてもそのまま抜けることが できます。 try構文は try エラーが起きそうな命令 on error エラー発生した時に実行したい内容 end try で、on error内がない場合はon errorは省略されます。 という感じですがどうでしょう。