在Bash中不指定索引的情况下向一个数组添加新元素

有没有一种方法可以像PHP的$array[] = 'foo';那样在bash中进行操作?

array[0] = 'foo'
array[1] = 'bar'
解决办法

是的,有。

ARRAY=()
ARRAY+=('foo')
ARRAY+=('bar')

Bash参考手册

在赋值语句为shell变量或数组索引赋值的情况下(见Arrays),'+='操作符可以用来追加到变量之前的值上。

评论(15)
$ declare -a arr
$ arr=("a")
$ arr=("${arr[@]}" "new")
$ echo ${arr[@]}
a new
$ arr=("${arr[@]}" "newest")
$ echo ${arr[@]}
a new newest
评论(3)

如果你的数组总是连续的并且从0开始,那么你可以这样做。

array[${#array[@]}]='foo'

# gets the length of the array
${#array_name[@]}

如果你不小心在等号之间使用了空格。

array[${#array[@]}] = 'foo'

那么你会收到类似的错误。

array_name[3]: command not found
评论(4)