gnuplot脚本名称或用于gnuplot的bash$0替代方案

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

如何以编程方式获取当前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 /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