異なる変数内の変数に値を渡す方法

異なる変数内の変数に値を渡す方法

このコードを実行すると、「無効な置換」エラーが発生します。ループを使ってh_1h_2の値を印刷したいと思います。h_3for

#/!/bin/bash
h_1=12
h_2=13
h_3=14
for ((i=1; i<=2; i++))
 do
  echo "${h_$i}"
done

ベストアンサー1

使用する必要があります間接パラメータの拡張そして!

tmp=h_$i
echo "${!tmp}

ここに追加の変数を作成する必要がありますtmp。残念ながら、文字列だけを使用することはできません。間接拡張は次のように機能します。

パラメーターの最初の文字が感嘆符(!)の場合、1段階変数間接指定が導入されます。 Bash は、残りの引数で構成される変数値を変数名として使用します。次に、その変数を展開し、引数自体の値ではなく、残りの置換にその値を使用します。これを間接拡張といいます。

したがって、上記の内容は、${!tmp}名前が次の変数の値に拡張されます。変数tmp

また利用できますevalここでは間接的なアプローチがよりきれいです。

おすすめ記事