2015-05-19 64 views
1

如何以編程方式獲取當前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,而不是腳本名稱

+0

您得到的'sh'是系統調用的命令行,而不是您的腳本。此外,這個問題似乎與bash無關。 – 4ae1e1

+0

Bash被用作示例語言,它可以證明我正在努力實現的目標。 –

+0

這並不是一個bash問題。 – 4ae1e1

回答

2

不太回答你的問題,但是這可能幫助你想要做什麼:

你可以在腳本中取消設置my_name,並將其設置在gnuplot中,就在你加載腳本之前(你需要知道s反正CRIPT名):

my_name=... 
load(my_name) 

或設置它,當你從外殼調用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)) 
+0

是的,這可能是最好的方法,謝謝。 –

1

使用的gnuplot版本5,你通過變量ARG0

訪問調用load文件認爲劇本test.gp只包含

print ARG0 

現在,調用此與

gnuplot -e "load 'test.gp'" 

在屏幕上打印您test.gp。使用較早的版本,您無法訪問類似的變量(在使用call時也不能訪問)。對於早期版本,您必須堅持@ chw21提供的解決方案之一

+0

我希望gnuplot 4.6 patchlevel 0也可以做到這一點 –