![gnuplot、此处文档和命令行参数](https://linux22.com/image/138306/gnuplot%E3%80%81%E6%AD%A4%E5%A4%84%E6%96%87%E6%A1%A3%E5%92%8C%E5%91%BD%E4%BB%A4%E8%A1%8C%E5%8F%82%E6%95%B0.png)
我可以使用此处文档将 gnuplot 脚本传递给 gnuplot 并将命令行参数传递给 gnuplot 吗?
在我的 bash 文件中,我通常会写:
#!/bin/bash
#set up code in here...
gnuplot -c script.gp $first $second
但我想将所有内容都放在一个 bash 文件中,所以我已经完成了
#!/bin/bash
#set up code in here...
gnuplot -c <<- EOF
do for [j=0:ARG1] {
do for [i=4:ARG2] {
plot '${data}' index j using 2:i with lp
}
}
EOF $first $second
但我得到了臭名昭著的warning: here-document at line 87 delimited by end-of-file (wanted
EOF')`` 错误。$data
、$first
、 和$second
是在 bash 脚本中前面定义的。
如果我将命令行参数放在下一行,而不考虑 EOF,我会收到与 值相关的命令未找到错误$first
。
我的此处文档仅使用制表符缩进。没有尾随空格。
答案1
这是一种解决方案:删除参数,然后手动进行替换。
#!/bin/bash
#set up code in here...
gnuplot <<- EOF
do for [j=0:${first}] {
do for [i=4:${second}] {
plot '${data}' index j using 2:i with lp
}
}
EOF
答案2
你可以尝试这样的事情:
gnuplot -c /dev/stdin "$first" "$second" <<-EOF
do for [j=0:ARG1] {
do for [i=4:ARG2] {
plot '${data}' index j using 2:i with lp
}
}
EOF
Gnuplot 抱怨
line 4: No previous filename
但是当使用脚本文件时我遇到了同样的错误,所以这可能与代码不完整有关。