如何将@数组分配给bash中的另一个变量?

时间:2018-06-15 16:54:35

标签: arrays bash variables

How to copy an array in Bash?的答案中,将数组从一个变量复制到另一个变量的解决方案是arrayClone=("${oldArray[@]}")

但是,如果我需要复制的数组是参数列表@

,该怎么办?

一个简单的测试脚本,如:

#! /bin/bash

argsCopy=("${@[@]}")

失败并显示错误:

  

第3行:$ {@ [@]}:错误替换

1 个答案:

答案 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中的许多内容一样,我无法解释语言的哪些规则导致它起作用,或者在什么情况下它可能最终失败。