我有一個包含 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[@]}"