-32
-arg value
value
をプログラムに渡す。-arg
スイッチは複数指定できる。プログラム中では COMMAND_LINE_ARGS
関数により、渡された文字列を取得できる。-args value1 value2 ...
value1
, value2
, ... をプログラムに渡す。文字列間はスペースで区切る。プログラム中では COMMAND_LINE_ARGS
関数により、渡された文字列を文字列型の配列として取得できる。-args
スイッチ以降の文字列は全て -args
スイッチの引数だとみなされるので、-args
スイッチは全てのコマンドライン引数のなかで最後に置く必要がある。-batch
-e statement
-nl language
-nl en
で英語、-nl ja
で日本語。-pref=file
-quiet
-vm=filename
filename
でsaveファイルを指定する。Windows では idlrt
コマンドを用いる。-rt=filename
idlrt
コマンドを用いる。以下のスイッチはIDL 8.6以降ではサポートされない。
-demo
-queue
-ulicense
コマンドラインスイッチで、設定を一時的に変更してIDLを起動することができる。まず、設定を記述するファイル(ファイル名を test.pref とする)を作成する。設定項目名と値はコロンで区切る。
IDL_CPU_TPOOL_NTHREADS : 4
IDL_GR_X_RETAIN : 2
IDL起動時に -pref
スイッチを用いてこのファイル (test.pref) をIDLに渡す。この方法は、アプリケーションごとに設定を切り替える場合に便利。
$ idl -pref=test.pref
設定を個別に指定して起動するもことができる。-(ハイフンマイナス)の直後に設定項目名と、スペースを開けて値を書く。
$ idl -IDL_CPU_TPOOL_NTHREADS 4 -IDL_GR_X_RETAIN 2
IDLは起動時の -e
オプションで指定された文字列、または標準入力から与えられた文字列をIDLのステートメントとして実行することができる。
test.pro に含まれる、MAIN programを実行する。実行完了後にIDLは自動的に終了する。
$ idl -e '.r test'
$ echo '.r test' | idl
test.pro と test2.pro に含まれる、MAIN programを続けて実行する。csh の場合は echo
の-e
オプションは不要。
$ echo -e '.r test\n.r test2' | idl
test3.pro または test3.sav に含まれる、ファイル名と同名のサブルーチンtest3を実行する。
$ idl -e test3
$ echo test3 | idl
test3.sav に含まれる、ファイル名と同名のサブルーチンtest3をIDL Virtual Machineで実行する。
$ idl -vm=test3.sav
バッチファイル test4.pro を実行する(バッチファイルでは末尾にEND
ステートメントは不要)。この方法でバッチファイルを実行する場合、実行完了後もIDLは自動的には終了しないので、終了させる場合はバッチファイル末尾に EXIT
ステートメントを入れておく必要がある。バッチファイルを複数指定することで、複数のバッチファイルを続けて実行することもできる。
$ idl test4
バッチファイル test4.pro を標準入力から与えたり、-e
スイッチ経由で与えることもできる。この場合は、実行完了後にIDLは自動的に終了する。
$ idl < test4.pro
$ cat test4.pro | idl
$ idl -e '@test4'
バッチファイルをシェルスクリプト中でヒアドキュメントとして与える。1行に複数のステートメントを書くときの区切り文字 &
と行継続文字 $
を組み合わせれば、BEGIN~ENDブロックを伴う制御構造も利用できる。
#!/bin/sh
num=10
idl << EOM
sum = 0
FOR i=1, ${num} DO BEGIN &$
sum += i &$
PRINT, i, sum &$
ENDFOR
EOM
idlは開始時に環境変数 IDL_STARTUP
で指定されたバッチファイルを実行する。環境変数 IDL_STARTUP
で指定されたバッチファイルの実行完了後もIDLは自動的には終了しない。一般的に環境変数 IDL_STARTUP
はユーザー独自のIDLの環境設定を行うのに用いられる。環境変数 IDL_STARTUP
で指定されたバッチファイルは、idlの引数、標準入力、-e
スイッチ経由で与えたプログラムよりも前に実行される。
一時的に環境変数 IDL_STARTUP
を変更してidlを起動するには次のようにする。
# BASHの場合
IDL_STARTUP=test4 idl
# TCSHの場合
( setenv IDL_STARTUP test4 ; idl )
プログラムの実行が完了すると、一部の場合を除いてIDL は直ちに終了する。プロットの結果などを表示しておきたい場合は、DIALOG_MESSAGE
関数 や READ
プロシージャなどで、ユーザーが何か操作をするまで一時停止させる。
$ idl -e "PLOT, SIN(FINDGEN(628)/100) & t = DIALOG_MESSAGE('Done')"
$ idl -e "CONTOUR, DIST(100), NLEVELS = 60 & t = '' & READ, 'Press ENTER to exit', t"
-arg
または -args
スイッチにより、文字列をプログラムに渡すことができる。-args
スイッチはスペースで区切られた複数の文字列を渡すことができる。-args
スイッチ以降の文字列は全て -args
スイッチの引数だとみなされるので、-args
スイッチは全てのコマンドライン引数のなかで最後に置く必要がある。プログラム中では COMMAND_LINE_ARGS
関数により、文字列の配列として取得できる。-arg
または -args
スイッチが指定されなかった時は、COMMAND_LINE_ARGS
関数は長さ0の文字列を返す。
$ idl -quiet -e 'PRINT, COMMAND_LINE_ARGS()' -arg Hello
Hello
$ idl -quiet -e 'PRINT, COMMAND_LINE_ARGS()' -arg Hello -arg World
Hello World
$ idl -quiet -e 'PRINT, COMMAND_LINE_ARGS()' -args Hello World
Hello World
他に、シェルからプログラムに情報を渡すための簡単な方法としては、環境変数がある。IDLプログラム中で GETENV
関数を使うことで環境変数を取得できる。
$ export PARM=Hello
$ idl -quiet -e "PRINT, GETENV('PARM')"