
変数名に別の変数文字列を持つシェル変数の値をエコーしたいと思います。例:
次のような出力が欲しい
var1=1
var2=2
以下のようなさまざまなフォームを試しましたが、機能しませんでした
for j in {1..2}
do
export var${j}=$j
echo "var${j}=${var${j}}"
done
名前に変数文字列を含むシェル変数を設定してエコーするにはどうすればよいでしょうか?
ありがとう
答え1
bash (または ksh) では、間接構文を使用して、${!var}
の値である名前を持つ変数を参照できます$var
。完全な名前である必要があるため、次のように実行する必要があります。
for j in {1..2}; do
# This could have been declare instead of export if you don't need
# to export the variable.
export var${j}=$j
varname=var$j
echo "var${j}=${!varname}"
done
答え2
あなたできる@rici が説明したようにこれを実行しますが、これはめったに良いアイデアではありません。代わりに配列を使用すると、より単純な構文で同じことを実現できます。
var=("1" "2");
for j in {0..1}
do
echo "var$j : ${var[$j]}"
done