我正在使用 bash here 文档(<< EOF
构造)将输入传递给 gnuplot 脚本,如下面的 MWE 所示。使用空文件的名称作为参数调用它。该脚本产生错误消息
more> do for [count=0:nsteps] {; @DOPLOT
^
line 0: invalid character @
line 0: Unexpected }
我目前的解决方法是使用 eval,但是,最好了解发生了什么。我可能需要逃避 at 角色@
,但对谷歌没有运气。有趣的是,将宏调用放在大括号之后是{
有效的。
#!/bin/bash
if [ -z "$1" ]
then
echo "usage: $0 <input file>"
exit
fi
inf="$1"
/usr/bin/env gnuplot << EOF
load "$inf"
set macros
DOPLOT="pause 0.25"
print "works:"
@DOPLOT
print "works:"
do for [count=0:1] { @DOPLOT
}
print "works:"
do for [count=0:1] {
eval DOPLOT
}
print "doesn't work:"
do for [count=0:1] {
@DOPLOT
}
EOF