我需要在 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