AppleScript/osascript
シェルからAppleScriptを実行する
osascript というOpen Scripting Architecture (OSA)に準拠した言語を実行するコマンドを用いる。/usr/bin/osascript に存在する。
- 引数にファイル名が渡されると、そのファイルに書かれたスクリプトが実行される。osacompile で予めコンパイルされたファイルの場合は、それが実行される。
- 引数として -e が渡されると、直後の文字列がスクリプトとして解釈され、実行される。
- 引数が渡されない場合は、標準入力がスクリプトとして実行される。
$ osascript "AppleScriptが書かれたファイル" $ osascript -e "the clipboard" $ osascript <<EOF > the clipboard > EOF
引数も受け取れる。
on run argv set hoge to "" repeat with x in argv set hoge to hoge & " " & x end repeat hoge end run
OS X 10.5 以降では
スクリプトを記述したファイルの先頭行にシェバングとして #!/usr/bin/osascript と書くと、シェルスクリプトと同様に実行できるようになった。便利!
#!/usr/bin/osascript set a to "HELLO" log a
(OS X 10.4 以前)osascriptと入力するのは面倒臭い
わざわざ別ファイルにスクリプトを書いて実行したり「osascript -e "..."」など実行したくない場合は、シェバングとして #!/usr/bin/osascript と書き、ファイルを実行するといいように思える。
#!/usr/bin/osascript tell application "iTunes" to play
しかしこれだと上手くいかない。「script error: A unknown token can't go here.」シェバング自体をスクリプトとして解釈しようとしてしまうらしい。 シェルスクリプトのようにシェバングを書いて実行させたい場合は、以下のファイルを例えば /usr/local/bin/osas に置く。
#!/bin/sh cat "$1" | (read;/usr/bin/osascript - "$@")
ファイルの内容を出力して、一行読み捨てて残りを osascript に引数と共に渡すシェルスクリプト。このファイルをシェバングとして一行目に記述する。
#!/usr/local/bin/osas tell application "iTunes" to play
このファイルに実行権限を付けて(chmod +x)から実行する。
Last modified:2013/07/12 16:23:25
0.057795