動的変数を使用した配列のコピー

動的変数を使用した配列のコピー

配列の下に24個の要素の配列が格納されています拡張子

echo ${mba_ext[13]} gives me expected results.

変数を作成しましたtemp="mba_ext"

ここで、temp 変数を利用して、配列の内容を別の配列にコピーしようとしています。次のようなコードを書きました。

new_array=$(eval echo '$'{${temp}[@]})

与えると、echo$new_arrayインデックスなしで配列のすべての内容が印刷されます。

与えてもecho ${new_array[4]}結果は得られません。理想的には、このコマンドはインデックス位置 4 のコンテンツを印刷するはずです。

誰か助けていただけませんか?

答え1

に基づくこの回答はSuper Userで

[@]適切な配列では変数間接参照を使用できます […]。注意すべき点は、間接参照する変数に配列要素 (またはすべての要素) を含める必要があることです。

使用した名前を含むサンプルコード:

mba_ext=('normal' 'with space' 'double"quote' "single'quote" $'new-\n-line' '\backslash')
temp="mba_ext"
temparray="${temp}[@]"   # This includes the array name AND "[@]"
new_array=("${!temparray}")
printf '<%s>\n' "${new_array[@]}"

関連情報