gnuplot脚本名称或用于gnuplot的bash$0替代方案
如何以编程方式获取当前gnuplot脚本的名称?我知道我可以从bash调用gnuplot脚本并获得它的文件名,但我想知道是否可以从gnuplot内部调用它。我的目标是制作如下内容:gnuplot脚本名称或用于gnuplot的bash$0替代方案,gnuplot,Gnuplot,如何以编程方式获取当前gnuplot脚本的名称?我知道我可以从bash调用gnuplot脚本并获得它的文件名,但我想知道是否可以从gnuplot内部调用它。我的目标是制作如下内容: date=system("date +%F_%T | sed 's/:/-/g'") my_name=$0 # THIS IS HOW TO DO IT IN BASH set term png set output my_name.date.".png" 我试过: my_name=system("cat /pr
date=system("date +%F_%T | sed 's/:/-/g'")
my_name=$0 # THIS IS HOW TO DO IT IN BASH
set term png
set output my_name.date.".png"
我试过:
my_name=system("cat /proc/$$/cmdline")
但是它返回的是sh而不是脚本名并不是您问题的答案,但这可能有助于您执行以下操作: 您可以在脚本中保留
my_name
unset,并在加载脚本之前在gnuplot中设置它(您仍然需要知道脚本名称):
或者在从shell调用gnuplot
时设置它:
$ gnuplot -e "my_name=${FILE}" ${FILE}
还有几件事:
date=system("date +%F_%T | sed 's/:/-/g'")
可以替换为
date=system("date +%F_%H-%M-%S")
(较短,不需要通过sed
解析)或根本不需要任何分叉:
date=strftime("%F_%H-%M-%S",time(0.0))
这不是对你问题的完全回答,但这可能有助于你想做什么: 您可以在脚本中保留
my_name
unset,并在加载脚本之前在gnuplot中设置它(您仍然需要知道脚本名称):
或者在从shell调用gnuplot
时设置它:
$ gnuplot -e "my_name=${FILE}" ${FILE}
还有几件事:
date=system("date +%F_%T | sed 's/:/-/g'")
可以替换为
date=system("date +%F_%H-%M-%S")
(较短,不需要通过sed
解析)或根本不需要任何分叉:
date=strftime("%F_%H-%M-%S",time(0.0))
使用gnuplotversion5,您可以通过变量
ARG0
考虑脚本test.gp
,它只包含
print ARG0
现在,用
gnuplot -e "load 'test.gp'"
在屏幕上打印您的
test.gp
。对于早期版本,您无法访问类似的变量(使用调用时也不能)。对于早期版本,您必须坚持@chw21给出的解决方案之一,使用gnuplot version 5,您可以通过变量ARG0
考虑脚本test.gp
,它只包含
print ARG0
现在,用
gnuplot -e "load 'test.gp'"
在屏幕上打印您的test.gp
。对于早期版本,您无法访问类似的变量(使用调用时也不能)。对于早期版本,您必须坚持@chw21给出的解决方案之一,您得到的sh
是系统调用的命令行,而不是脚本。此外,这个问题似乎与bash无关。bash只是作为示例语言使用,可以演示我试图实现的目标。这并不是bash问题。您得到的sh
是系统调用的命令行,而不是脚本。也,这个问题似乎与bash无关。bash只是作为示例语言使用的,可以演示我试图实现的目标。这并不是bash的问题。我希望gnuplot 4.6 patchlevel 0也可以通过gnuplot 5.2 patchlevel 8
实现。我能够使用ARG0
,而不需要load
只需gnuplot plot\u file\u name.plt
。我希望gnuplot 4.6 patchlevel 0也可以通过gnuplot 5.2 patchlevel 8
使用ARG0
而不用load
只需gnuplot plot\u file\u name.plt
。