猿问

向数组添加新元素,而不在Bash中指定索引

向数组添加新元素,而不在Bash中指定索引

有没有办法$array[] = 'foo';在bash中执行类似PHP的操作:

array[0] = 'foo'array[1] = 'bar'


千巷猫影
浏览 629回答 3
3回答

qq_花开花谢_0

就在这里:ARRAY=()ARRAY+=('foo')ARRAY+=('bar')Bash参考手册:在赋值语句为shell变量或数组索引赋值的上下文中(参见Arrays),'+ ='运算符可用于追加或添加到变量的先前值。

婷婷同学_

正如Dumb Guy指出的那样,重要的是要注意阵列是否从零开始并且是顺序的。由于您可以分配和取消设置非连续索引,${#array[@]}因此并不总是数组末尾的下一个项目。$ array=(a b c d e f g h)$ array[42]="i"$ unset array[2]$ unset array[3]$ declare -p array     # dump the array so we can see what it containsdeclare -a array='([0]="a" [1]="b" [4]="e" [5]="f" [6]="g" [7]="h" [42]="i")'$ echo ${#array[@]}7$ echo ${array[${#array[@]}]}h以下是获取最后一个索引的方法:$ end=(${!array[@]})   # put all the indices in an array$ end=${end[@]: -1}    # get the last one$ echo $end42这说明了如何获取数组的最后一个元素。你会经常看到这个:$ echo ${array[${#array[@]} - 1]}g如您所见,因为我们正在处理稀疏数组,所以这不是最后一个元素。这适用于稀疏和连续数组,但是:$ echo ${array[@]: -1}i

慕桂英3389331

$ declare -a arr $ arr=("a")$ arr=("${arr[@]}" "new")$ echo ${arr[@]}a new $ arr=("${arr[@]}" "newest")$ echo ${arr[@]}a new newest
随时随地看视频慕课网APP
我要回答