Gnuplot中的语法未知?

时间:2015-07-22 22:17:08

标签: bash gnuplot

我正在学习将BASH列表传递给Gnuplot而不生成中间文件。我找到的答案非常有用(Christoph在Set parameters of Gnuplot from array in bash script)。代码如下。

我对两个符号感到困惑。一个是 values =" $ {params []} *中的" 。另一个是 eval中的(' set' .val)。我没有在手册中找到语法。你能告诉我它们的用途吗?

### Code
#!/bin/bash
params[0]='grid'
params[1]='xrange[0:10]'

gnuplot -persist << EOF
values="${params[*]}
do for [val in values] {
    eval('set '.val)
}
plot x
EOF
####

1 个答案:

答案 0 :(得分:1)

这里的文档是从shell变量构造的。 ${params[*]}是“数组params中连接成字符串的所有元素”的bash代码。它不是所有的gnuplot代码。

gnuplot -persist替换为cat以查看gnuplot看到的内容:

#!/bin/bash                                                                  
params[0]='grid'                                                             
params[1]='xrange[0:10]'                                                     

cat << EOF                                                                   
values="${params[*]}                                                         
do for [val in values] {                                                     
    eval('set '.val)                                                         
}                                                                            
plot x                                                                       
EOF                                                                          

导致:

values="grid xrange[0:10]
do for [val in values] {
    eval('set '.val)
}
plot x

values="grid xrange[0:10]是一个变量赋值:

gnuplot> values="grid xrange[0:10]
gnuplot> print values
grid xrange[0:10]

.是字符串连接:

gnuplot> print "foo" . "bar"
foobar

因此,结果是gnuplot会对set gridset xrange[0:10]进行评估,就像您手动输入它们一样。