数组复制

数组和集合 / 数组

numbers1=(1 2 3 4 5)

#"${a[@]}" in quotes copies every element as it is
numbers2=("${numbers1[@]}")
numbers2[0]=100
#numbers2 is (100 2 3 4 5), numbers1 is (1 2 3 4 5):
#bash keeps no references, the copy has its own elements

#without [@] only the first element is copied, into a plain string
numbers3=$numbers1
#numbers3 is "1"

#a reference instead of a copy: declare -n (bash 4.3 and newer)
declare -n alias=numbers1
alias[0]=10
#numbers1[0] is 10, numbers2[0] is 100

echo "numbers2 is (${numbers2[*]})"
echo "numbers3 is $numbers3"
echo "numbers1[0] is ${numbers1[0]}"
echo "numbers2[0] is ${numbers2[0]}"