配列の下に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[@]}"