gnuplot 4.2 で環境変数を取得する方法 (How to get environmental variables in Gnuplot)
gnuplot 4.2 には環境変数を取り出すコマンドは用意されていない。が、シェルスクリプトで引数を渡して実行したいことがよくある。
temp ファイルを作る
ひとつの方法としては、スクリプトで値を代入するコードをファイルに出力して、それを gnuplot の方で load
する。
たとえば、
#!/bin/sh L="hogehoge" ... echo L=\"$L\" > temp.gnuplot # ここで $L は hogehoge に展開されている。 gnuplot run.gnuplot
のようなスクリプトを書いて、 run.gnuplot
では
load 'temp.gnuplot' ...
とする。
load
コマンドを利用
load コマンドにはシェルコマンドを実行し、その標準出力をコマンドとして実行する機能がある。
load '< echo L = \"$L\"' # L = "hogehoge" が実行される
この場合、 echo がクオートを解釈しないようにエスケープする。
最初にこっちを思いついたんだけど、 system
の方がスマートだった。
システムコマンド置換を利用
L = "`echo $L`" # L = "hogehoge" に置換されて実行される。
こんな風にもできる。`
で囲まれた部分が実行されて、その標準出力に置換される。$L
が文字列の場合、さらに全体を "
で(('
だと置換が実行されないので注意。))クオートしておかないとエラーになる。(そんな変数はないとかなんとか)
結論
やり方は意外とたくさんある。
*1:ようするに spawn