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

gnuplot script name OR bash $0 alternative for gnuplot

如何以编程方式获取当前gnuplot脚本的名称?我知道我可以从 bash 调用 gnuplot 脚本并获取它的文件名,但我想知道是否可以从 gnuplot 内部调用它。我的目标是制作类似:

date=system("date +%F_%T | sed 's/:/-/g'")
my_name=[=11=] # 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 未设置,并在加载脚本之前在 gnuplot 中设置它(无论如何您需要知道脚本名称):

my_name=...
load(my_name)

或在从 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))

使用 gnuplot 版本 5,您可以通过变量 ARG0

访问用 load 调用的文件

考虑只包含

的脚本test.gp
print ARG0

现在,用

调用它
gnuplot -e "load 'test.gp'"

将您 test.gp 打印在屏幕上。对于早期版本,您无法访问类似的变量(在使用 call 时也是如此)。对于早期版本,您必须坚持使用 @chw21

给出的解决方案之一