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