Array-Kopieren mit dynamischen Variablen

Array-Kopieren mit dynamischen Variablen

Ich habe ein Array von 24 Elementen unter dem Array gespeichertmba_ext.

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

Nun habe ich eine Variable erstellttemp="mba_ext"

Jetzt versuche ich, den Inhalt des Arrays mithilfe der temporären Variable in ein anderes Array zu kopieren. Ich habe den Code wie folgt geschrieben:

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

Wenn ich dies eingebe, echo$new_arraywird der gesamte Inhalt des Arrays ohne Index ausgedruckt.

Wenn ich eingebe, echo ${new_array[4]}erhalte ich keine Ergebnisse. Idealerweise sollte dieser Befehl den Inhalt an Indexposition 4 drucken.

Kann jemand bitte helfen?

Antwort1

Bezogen aufdiese Antwort auf Super User.

Sie können die Variablenindirektion mit einem richtigen Array verwenden […]. Der Kniff dabei ist, dass Sie das Array-Element (oder [@]alle Elemente) in die Variable einschließen müssen, über die Sie die Indirektion durchführen.

Beispielcode mit den von Ihnen verwendeten Namen:

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

verwandte Informationen