今回のテーマは 「標準出入力」を扱う。
OSXのスクリプトエディタは大変進化していて、Objective-CやC言語のライブラリにアクセスできる。
視点を変えればものすごく便利なツールだと思ってます。
標準出入力を扱う。
今回は、コマンドラインの引数を取り扱うサンプルです。
osascript -l JavaScript arg.js こんにちは
このようにして、コマンドライン引数を処理したら便利じゃん?
arg.js
#!/usr/bin/env osascript -l JavaScript ObjC.import('stdlib') function run( argv ){ if( argv.length < 1 ){ console.log("引数を指定してください"); $.exit(1) return; } argv.forEach( function (e,i) { console.log("argv["+i+"]="+ argv[i]) }) $.exit(0) }
実行結果
./arg.js こ ん ち は takuya argv[0]=こ argv[1]=ん argv[2]=ち argv[3]=は argv[4]=takuya
ポイントは function run()
run 関数を指定しておくだけでいいのよ。
jxa における run() は void main(); に相当します。
以下が、ハロワールドになります。
#!/usr/bin/env osascript -l JavaScript function run( argv ) { }
もう一つのポイントは $ でstdlib へマッピング
$ オブジェクトは、 import したライブラリへの参照が含まれている。
$.exit (0)
今回のサンプルでは stdlib をインポートしている。
ObjC.import('stdlib') $.exit (0)
なので、 $.exit は stdlib のexit 関数を呼び出している。