在How to copy an array in Bash?的答案中,将数组从一个变量复制到另一个变量的解决方案是arrayClone=("${oldArray[@]}")
。
但是,如果我需要复制的数组是参数列表@
?
一个简单的测试脚本,如:
#! /bin/bash
argsCopy=("${@[@]}")
失败并显示错误:
第3行:$ {@ [@]}:错误替换
答案 0 :(得分:0)
通过实验,似乎argsCopy=("$@")
就足够了。
当我通过./test.sh 1 2 3\ 4
,
#! /bin/bash
set -x
argsCopy=("$@")
echo "${argsCopy[@]}" > /dev/null
输出:
+ argsCopy=("$@")
+ echo 1 2 '3 4'
然而,就像sh / bash中的许多内容一样,我无法解释语言的哪些规则导致它起作用,或者在什么情况下它可能最终失败。