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""可行,但以上两种是最常见的)。当 heredoc 定界符不加引号时,shell 将扩展$2为传递给脚本的第二个参数。(尝试使用 2 个参数调用脚本。)当引用 heredoc 分隔符时,不会发生这种扩展。

于 2012-06-27T14:13:46.870 回答