我想用gnuplot从数据文件中绘制图形,比如foo.data。目前,我在命令文件中对数据文件名称进行了硬编码,如foo.plt,并运行命令gnuplot foo.plg
以绘制数据。但是,我想将数据文件名作为命令参数传递,例如运行命令gnuplot foo.plg foo.data
。如何解析gnuplot脚本文件中的命令行参数?谢谢。
发布于 2018-03-30 14:20:43
您可以通过开关输入变量 -e
$ gnuplot -e "filename='foo.data'" foo.plg
在foo.plg中,您可以使用该变量
$ cat foo.plg
plot filename
pause -1
要使“foo.plg”更具通用性,请使用条件:
if (!exists("filename")) filename='default.dat'
plot filename
pause -1
发布于 2018-03-30 15:02:08
您可以使用标志将参数从版本5.0传递到gnuplot脚本-c
。这些参数是通过变量访问ARG0
到ARG9
,ARG0
作为脚本,并ARG1
以ARG9
字符串变量。参数个数由下式给出ARGC
。
例如,以下脚本(“script.gp”)
#!/usr/local/bin/gnuplot --persist
THIRD=ARG3
print "script name : ", ARG0
print "first argument : ", ARG1
print "third argument : ", THIRD
print "number of arguments: ", ARGC
可以称为:
$ gnuplot -c script.gp one two three four five
script name : script.gp
first argument : one
third argument : three
number of arguments: 5
或者在gnuplot内
gnuplot> call 'script.gp' one two three four five
script name : script.gp
first argument : one
third argument : three
number of arguments: 5
在gnuplot 4.6.6及更早版本中,存在一种call
具有不同(现在已被弃用)语法的机制。该参数通过访问$#
,$0
,... $9
。例如,上面的脚本看起来像这样:
#!/usr/bin/gnuplot --persist
THIRD="$2"
print "first argument : ", "$0"
print "second argument : ", "$1"
print "third argument : ", THIRD
print "number of arguments: ", "$#"
它在gnuplot内被调用为(记住,版本<4.6.6)
gnuplot> call 'script4.gp' one two three four five
first argument : one
second argument : two
third argument : three
number of arguments: 5
注意脚本名没有变量,$0
第一个参数也是这样,变量在引号内被调用。没有办法直接从命令行使用它,只能通过@ con-fu-se建议的技巧来使用它。
https://stackoverflow.com/questions/-100003746
复制相似问题