Gnuplot 中的未知语法?
Unknown syntax in Gnuplot?
我正在学习将 BASH 列表传递给 Gnuplot 而无需生成中间文件。我找到的答案非常有用(来自 Set parameters of Gnuplot from array in bash script 的 Christoph)。代码如下。
我对两个符号感到困惑。一个是 " in 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
####
这里的文档是由 shell 个变量构成的。 ${params[*]}
是 bash "all elements in the array params
concatenated into a string" 的代码。这不是所有的 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
所以结果是 set grid
和 set xrange[0:10]
由 gnuplot 评估,就像您手动输入它们一样。
我正在学习将 BASH 列表传递给 Gnuplot 而无需生成中间文件。我找到的答案非常有用(来自 Set parameters of Gnuplot from array in bash script 的 Christoph)。代码如下。
我对两个符号感到困惑。一个是 " in 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
####
这里的文档是由 shell 个变量构成的。 ${params[*]}
是 bash "all elements in the array params
concatenated into a string" 的代码。这不是所有的 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
所以结果是 set grid
和 set xrange[0:10]
由 gnuplot 评估,就像您手动输入它们一样。