gnuplot shell 变量替换和数组

gnuplot shell 变量替换和数组

我需要在 gnuplot 命令中使用 shell 变量,为此我使用了此处的文档样式。我还需要在 gnuplot 代码中使用循环。这两件事都在发挥作用。

现在——我想使用 gnuplot for 循环的索引来访问 shell 数组变量。这就是我整天被困的地方。

我有这样的事情:

for ((i=0; i<=10; i++))
do
var[$i] = i*10
done

gnuplot<<EOF
do for [j=1:10]{
#need to access ${var[j]} somehow
val=sprintf("${var[%d]", j) ##doesn't work
}
EOF

像 ${var[1]} 这样的个人访问是有效的。我怀疑这可能需要使用反引号和/或 expr,但我不确定。

答案1

你在这里混淆了语法。

shell 会看到${var[%d]哪个看起来有点像 shell 变量 - 但事实并非如此。你应该试试

cat <<EOF
...
EOF

进行调试并准确查看发生了什么。我认为你想要的是更像

for ((i=0; i<=10; i++))
do
var[$i] = i*10
done

gnuplot<<EOF
values="${var[*]}"
do for [j in values] {
#need to access ${var[j]} somehow
val=sprintf("%d", j) ##access part of the array directly
}
EOF

相关内容