我正在尝试将元素添加到bash数组中,但我不知道为什么不添加它们:
$ cat /tmp/tmp.bash
#!/bin/bash
declare -a base=(
"python"
"python-setuptools"
)
packages=( "${base[*]}" "tools" "oracle" )
echo "$packages"
$ /tmp/tmp.bash
python python-setuptools
$
在输出中,我们仅看到base
数组元素,但看不到我添加的两个元素。
知道我在做什么错吗?
答案 0 :(得分:5)
$packages
扩展到仅第一个元素。要打印所有数组元素,请写:
echo "${packages[@]}"
类似地,展开$base
时,应使用@
而不是*
。 *
导致"python"
和"python-setuptools"
连接到单个数组条目:python python-setuptools"
。
packages=( "${base[@]}" "tools" "oracle" )
还请注意,无需引用简单的字符串文字。您可以忽略它们。
base=(
python
python-setuptools
)
packages=("${base[@]}" tools oracle)
echo "${packages[@]}"