1

私は非常に単純なスクリプトを持っています:

#!/bin/bash
gnuplot << EOF
set term postscript portrait
set output 'out.ps'

plot 'data_file' u 3:($2==0.0 ? $2:1/0)

EOF

次のようになりdata_fileます。

  O4     -1.20     -0.33     -5.20  
O9.5     -1.10     -0.30     -3.60  
  B0     -1.08     -0.30     -3.25  
B0.5     -1.00     -0.28     -2.60  
B1.5     -0.90     -0.25     -2.10  
B2.5     -0.80     -0.22     -1.50  
  B3     -0.69     -0.20     -1.10  
....

いくつかの組み合わせを試しましたが、常に同じエラーが発生します。

gnuplot> plot 'S-K_data' u 3:(==0.0 ? :1/0)
                          ^
         line 0: invalid expression 

ご覧のとおり、$2文字を読んでおらず、その理由がわかりません。

4

1 に答える 1

3

引用符で囲まれていないヒアドキュメントでは、変数が展開されています。試す

gnuplot << 'EOF'

また

gnuplot << \EOF

どちらを選択するかは個人的な好みの問題です(任意の引用メカニズムを使用できるため、EOF""機能しますが、上記の2つが最も一般的です)。ヒアドキュメント区切り文字が引用符で囲まれていない場合、シェルは$2スクリプトに渡された2番目のパラメーターに展開されます。(2つの引数を使用してスクリプトを呼び出してみてください。)ヒアドキュメント区切り文字が引用されている場合、そのような展開は行われません。

于 2012-06-27T14:13:46.870 に答える