为了账号安全,请及时绑定邮箱和手机立即绑定

如何将命令行参数传递给gnuplot?

/ 猿问

如何将命令行参数传递给gnuplot?

如何将命令行参数传递给gnuplot?

我想用gnuplot从数据文件中绘制图形,比如说foo.data。目前,我在命令文件中硬编码了数据文件名,比如foo.plt,并运行命令gnuplot foo.plg来绘制数据。但是,我想将数据文件名作为命令参数传递,例如运行命令gnuplot foo.plg foo.data。如何解析gnuplot脚本文件中的命令行参数?谢谢。



查看完整描述

3 回答

?
Qyouu

您可以通过开关输入变量 -e

$ gnuplot -e "filename='foo.data'" foo.plg

在foo.plg中,您可以使用该变量

$ cat foo.plg plot filenamepause -1

要使“foo.plg”更通用,请使用条件:

if (!exists("filename")) filename='default.dat'plot filenamepause -1

请注意,-e必须在文件名之前,否则文件在-e语句之前运行。特别是,#!/usr/bin/env gnuplot使用./foo.plg -e ...CLI参数运行shebang gnuplot 将忽略使用提供的参数。


查看完整回答
反对 回复 2019-08-06
?
呼啦一阵风

您可以使用标志将版本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建议的技巧。


查看完整回答
反对 回复 2019-08-06
?
慕盖茨1488219

您还可以按照此处的建议通过环境传递信息。Ismail Amin的例子在这里重复:

在shell中:

export name=plot_data_file

在Gnuplot脚本中:

#! /usr/bin/gnuplotname=system("echo $name")set title nameplot name using ($16 * 8):20 with linespoints notitlepause -1


查看完整回答
反对 回复 2019-08-06
  • 3 回答
  • 0 关注
  • 644 浏览
我要回答

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信