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
给出的解决方案之一
如何以编程方式获取当前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