对不起,但我不知道拼写这个的正确方法。我希望这个例子可以解释我的问题:
$ array[1]=john
$ array[2]=smith
$ array[4]=jane
$ array[5]=doe
$ echo ${array[@]}
john smith jane doe
$ echo ${array[3]}
$
我想要一些方法删除"洞"在array
的第3位,以便:
jane
将移至第3位。doe
将移至第4位。是否需要通过数组编程任何循环来获取它,或者有一些更简单的方法?
进一步的数据:
答案 0 :(得分:5)
只需使用元素创建一个新数组:
$ array=([1]=john smith [4]=jane doe)
$ declare -p array
declare -a array='([1]="john" [2]="smith" [4]="jane" [5]="doe")'
$ array=("${array[@]}")
$ declare -p array
declare -a array='([0]="john" [1]="smith" [2]="jane" [3]="doe")'
请注意,这从0开始计算,而不是1.如果您确实需要基于1的数组,请将虚拟元素添加到新数组中,然后将其删除。
$ array=(foo "${array[@]}")
$ unset 'array[0]'
$ declare -p array
declare -a array='([1]="john" [2]="smith" [3]="jane" [4]="doe")'