top

TOP  RSS  Login

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

bul

0.172869