我有一个非常简单的脚本:
#!/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
个字符而我无法找出原因。
答案 0 :(得分:3)
在未加引号的doc中,变量被扩展。尝试
gnuplot << 'EOF'
或
gnuplot << \EOF
您选择的是个人偏好问题(您可以使用任何引用机制,因此EOF""
有效,但上面两个是最常见的)。当heredoc分隔符未加引号时,shell将$2
扩展为传递给脚本的第二个参数。 (尝试使用2个参数调用脚本。)当引用heredoc分隔符时,不会发生此类扩展。