如何在gnuplot上将变量传递给-e?

时间:2014-08-12 07:39:05

标签: bash gnuplot

我想定义gnuplot输出,它是一个png file.how,用于在gnuplot上定义 fileName

    #This lines and also Traffic$j are define on my bash file.
    # Traffic$j is the name of file and that is valid. Traffic$j is on the loop
    # j is loop index
.
.

    fileName=Traffic$j
.
.

我试试这个:

gnuplot -e "filename=${!fileName}" plotFile

但是我犯了这个错误:

  

第0行:需要持续表达

我尝试了鲁赫克的想法:

gnuplot -e "filename = '${!fileName}'" plotFile

但我发出了这个警告:

  

" plotFile",第12行:警告:跳过没有有效点的数据文件

第12行?看看我最后一行的剧本。

如何将变量传递给gnuplot上的 -e

更新 我的plotFile是这样的:

set terminal png size 720,450 enhanced font "H,11"
set output filename . '.png'

plot '../_numXY' using 2:3:(sprintf('%d', $1)) with labels offset 0,1 point pointtype 7 ps 2 lc rgb "green" notitle, \
filename using 1:2:($3-$1):($4-$2) with vectors linewidth 6 lc rgb "blue" notitle #line 12

2 个答案:

答案 0 :(得分:1)

问题不在于如何传递变量,而是如何引用字符串。例如,如果$j3$Traffic3file.txt,那么您传递给-e的内容为filename=file.txt,当您需要传递的内容类似于filename = "file.txt"filename = 'file.txt'。所以:

gnuplot -e "filename = '${!fileName}'" plotFile

编辑添加:在评论中,您写道:

  

谢谢,$ Traffic3不是file.txt。或者更好地说我没有$ Traffic3但我有Traffic3。 Traffic3不是参数。它是文件本身的名称,而不是指像file.txt

这样的另一个东西

这意味着您不应该写${!fileName},而应该$fileName。符号${!fileName}大致意思是“O.K.,所以$fileName的值是另一个变量的名称。给我这个变量的值。”所以你只想要:

gnuplot -e "filename = '$fileName'" plotFile

答案 1 :(得分:0)

您可能不想进行间接变量扩展?

gnuplot -e "filename=${fileName}" plotFile