web-dev-qa-db-ja.com

gnuplotシェル変数の置換と配列

ヒアドキュメントスタイルを使用しているgnuplotコマンドでシェル変数を使用する必要があります。また、gnuplotコード内でループを使用する必要があります。これらは両方とも機能しています。

ここで、gnuplot forループのインデックスを使用して、シェル配列変数にアクセスします。これは私が一日中立ち往生しているところです。

私はこのようなものを持っています:

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を使用する必要があると思いますが、よくわかりません。

6
fhussain

ここで構文を混同しています。

シェルには${var[%d]が表示されますが、これはシェル変数に少し似ていますが、そうではありません。試してみてください

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
4
Julian