ループの配列名などの配列値を使用して二重ループを実行しようとしています。
array1="name1 name2"
name1="one two"
name2="red blue"
for name in $array1
do
for value in $name
do
echo "$name - $value"
done
done
2番目のループでは、「$ name」に「name」を使用する必要がありますが、これは機能しません。
配列名のように、2番目のループでarray1値をどのように使用できますか?
ベストアンサー1
これはあなたがいる場所ではありませんbash
。
a="foo bar"
文字列/スカラー変数を定義します。分割+グローブ演算子を実行するために(引用符なしで)使用されます。これは$a
、ファイルパターンの区切りリストを表す文字列にのみ意味があります。$IFS
のbash
配列は次のように定義されます。
a=(foo bar)
ここで欲しいものは次のとおりです。
array1=(name1 name2)
name1=(one two)
name2=(red blue)
for name in "${array1[@]}"
do
typeset -n nameref="$name"
for value in "${nameref[@]}"
do
printf '%s\n' "$name - $value"
done
done
typeset -n
比較的新しい追加bash
であり、ステータス名前参照は他の変数の名前を含む変数で、拡張すると実際には指定された変数を指す。