私のbashの例は次のとおりです。
var
最初のケースでは、「alias」を使用して実行したい操作は次のとおりですmyvarA
。
myvarA="variableA"
varname="A"
eval varAlias=\$"myvar"$varname
echo $varAlias
配列変数の2番目のケースとそのメンバーの反復は簡単です。
myvarA=( "variableA1" "variableA2" )
for varItem in ${myvarA[@]}
do
echo $varItem
done
今、私は例1のような「エイリアス」技術を使用する必要がありますが、今回は配列変数について次のようになります。
eval varAlias=\$"myvar"$varname
for varItem in ${varAlias[@]}
do
echo $varItem
done
myvarA
ただし、最後のケースでは、最初のメンバーのみが印刷されます。つまり、eval
変数の値が評価されます。 var配列変数を次eval
のように評価するにはどうすればよいですか?配列変数の名前いいえ変数値。
ベストアンサー1
パラメータ拡張の最も簡単な形式は次のとおりです${parameter}
。
混乱した状況では、中括弧を使用する方が良い方法です。
「myvarA」配列にスペースが含まれる可能性を考えると、これが答えだと思います。
#!/bin/bash -x
myvarA=( "variable A1" "variable A2" )
varname="A"
eval varAlias=( '"${myvar'${varname}'[@]}"' )
eval varAlias=( \"\${myvar${varname}[@]}\" ) # both works
for varItem in "${varAlias[@]}" # double quote and `@' is needed
do
echo "$varItem"
done