Bash数组:删除以短划线( - )开头的元素

时间:2014-07-26 12:01:09

标签: arrays bash sed grep

假设我有以下数组,其中元素可以任何方式排序:

items=('this-item' 'that-item' '-fd')

如何使用短划线(-fd)删除开始

1 个答案:

答案 0 :(得分:3)

这是一种方式:

for i in "${!items[@]}"; do
    [[ ${items[i]} == -* ]] && unset "items[$i]"  ## Or unset 'items[i]'
done

# Optionally re-align indices:
items=("${items[@]}")

如果您只想删除第三个元素,您可以:

items=("${items[@]:0:2}")

或者只是

unset 'items[2]'

如果您有超过3个元素:

items=(1 2 3 4 5)
items=("${items[@]:0:2}" "${items[@]:3}")

或者只是

unset 'items[2]'; items=("${items[@]}")

请注意,数组索引从0开始。如果某些索引被删除,也可能会有所不同。