このコードを実行すると、「無効な置換」エラーが発生します。ループを使ってh_1
、h_2
の値を印刷したいと思います。h_3
for
#/!/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
ここでは間接的なアプローチがよりきれいです。