为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

千巷猫影 2019-07-27 15:14:36
向数组添加新元素,而不在Bash中指定索引有没有办法$array[] = 'foo';在bash中执行类似PHP的操作:array[0] = 'foo'array[1] = 'bar'
查看完整描述

3 回答

?
qq_花开花谢_0

TA贡献1835条经验 获得超6个赞

就在这里:

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

Bash参考手册

在赋值语句为shell变量或数组索引赋值的上下文中(参见Arrays),'+ ='运算符可用于追加或添加到变量的先前值。


查看完整回答
反对 回复 2019-07-27
?
婷婷同学_

TA贡献1844条经验 获得超8个赞

正如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


查看完整回答
反对 回复 2019-07-27
?
慕桂英3389331

TA贡献2036条经验 获得超8个赞

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


查看完整回答
反对 回复 2019-07-27
  • 3 回答
  • 0 关注
  • 574 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信