你会想用的
newarray=( "${oldarray[@]}" )
保持数组元素的完整性。
${oldarray[*]}
将涉及分词,这将打破至少与包含空格的元素。
然而,显而易见的是
declare -a "$name"=("${oldarray[@]}")
不起作用,括号是否被引用。一种方法似乎是使用一个名称引用。这将复制
old
到
new
,其中的名称
新的
可动态给出:
#!/bin/bash
old=("abc" "white space")
name=new
declare -a "$name" # declare the new array, make 'ref' point to it
declare -n ref="$name"
ref=( "${old[@]}" ) # copy
#unset -n ref # unset the nameref, if required
declare -p "$name" # verify results