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

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

配列の下に24個の要素が格納されている配列があります。MBA_拡張

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

これで変数を作成しました。temp="mba_ext"

次に、一時変数を使用して配列の内容を別の配列にコピーしようとしています。私が書いたコードは次のとおりです。

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

これにより、echo$new_arrayインデックスなしで配列のすべての内容が印刷されます。

してもecho ${new_array[4]}結果はありません。理想的には、このコマンドはインデックス位置4の内容を印刷する必要があります。

誰でも助けることができますか?

答え1

に基づいてこの答えはスーパーユーザーにあります。

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

使用する名前を含むサンプルコード:

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[@]}"

関連情報