使用任意数量的参数填充 bash 数组

Populate bash array with any amount of arguments

我正在尝试通过将内容直接传递给脚本来填充脚本中的数组:

bash ./script.sh arg1 arg2 arg3

我知道我可以用 $1、$2 等等来处理这些参数,但是数组中的项目数量并不总是相同,这就是我不能真正做到的原因:

databases=(  )

我想我可以使用循环,但我不知道如何遍历所有传递的参数。

你想要

databases=("$@")

将所有的参数抓取到数组中

你必须在那里使用引号,否则

bash ./script.sh "arg one" "arg two" "arg three"

无法正确捕获 3 个参数。


正如@Gordon 所说,

for db in "${databases[@]}"; do
    echo "$db"
done

如您所见:$databases 表现得像 ${databases[0]} -- 一个 bash 怪癖。

并引用你的变量:不是 echo $i 而是 echo "$i" -- 养成这个习惯,它会拯救你的隐藏。