我需要从bash shell中的数组中删除一个元素。
一般我只是做:
一般我只是做:
array=("${(@)array:#<element to remove>}")
不幸的是,我想删除的元素是一个变量,所以我不能使用以前的命令。
下面这个例子:
array+=(pluto) array+=(pippo) delete=(pluto) array( ${array[@]/$delete} ) -> but clearly doesn't work because of {}
任何想法?
下面的工作原理和你在bash和zsh中一样:
$ array=(pluto pippo) $ delete=(pluto) $ echo ${array[@]/$delete} pippo $ array=( "${array[@]/$delete}" ) #Quotes when working with strings
如果需要删除多个元素:
... $ delete=(pluto pippo) for del in ${delete[@]} do array=("${array[@]/$del}") #Quotes when working with strings done
警告
这种技术实际上从元素中删除与$ delete匹配的前缀,而不一定是整个元素。