使用動態變數進行數組複製

使用動態變數進行數組複製

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

相關內容