nat*_*evw 6 arrays variables bash
在如何在 Bash 中复制数组的答案中?,将数组从一个变量复制到另一个变量的解决方案是arrayClone=("${oldArray[@]}")。
但是,如果我需要复制的数组是参数列表怎么办@?
一个简单的测试脚本,例如:
#! /bin/bash
argsCopy=("${@[@]}")
Run Code Online (Sandbox Code Playgroud)
失败并出现错误:
第 3 行:${@[@]}:错误替换
通过实验,似乎这就argsCopy=("$@")足够了。
当我通过运行以下命令时./test.sh 1 2 3\ 4,
#! /bin/bash
set -x
argsCopy=("$@")
echo "${argsCopy[@]}" > /dev/null
Run Code Online (Sandbox Code Playgroud)
它输出:
+ argsCopy=("$@")
+ echo 1 2 '3 4'
Run Code Online (Sandbox Code Playgroud)
然而,就像 sh/bash 中的许多事情一样,我无法解释该语言的哪些规则导致它起作用,或者在什么情况下它可能最终失败。