それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

コマンドライン引数と、C言語のstdlibを使う

今回のテーマは 「標準出入力」を扱う。

OSXスクリプトエディタは大変進化していて、Objective-CC言語のライブラリにアクセスできる。

視点を変えればものすごく便利なツールだと思ってます。

標準出入力を扱う。

今回は、コマンドラインの引数を取り扱うサンプルです。

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 関数を呼び出している。

その他の JavaScript for OSX のついては

takuya-1st.hatenablog.jp