別の文字列シェル変数の文字列をエコーする方法

別の文字列シェル変数の文字列をエコーする方法

変数名に別の変数文字列を持つシェル変数の値をエコーし​​たいと思います。例:

次のような出力が欲しい

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

関連情報