如何向Bash数组中添加元素?

3

我想向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数组元素,而没有看到我添加的两个元素。
有什么想法我做错了什么?
1个回答

4

$packages 只扩展到第一个元素。要打印所有数组元素,请写成:

echo "${packages[@]}"

同样地,当你扩展 $base 时,应该使用 @ 而不是 ** 会将 "python""python-setuptools" 连接成一个数组条目:python python-setuptools"
packages=( "${base[@]}" "tools" "oracle" )

请注意,没有必要引用简单的字符串字面值。您可以省略它们。

base=(
    python
    python-setuptools
)

packages=("${base[@]}" tools oracle)
echo "${packages[@]}"

您还可以使用 +=( ) 来附加到数组:packages+=(tools oracle) - Gordon Davisson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接