分页: 1 / 1

bash 如何删除数组中的元素

发表于 : 2012-03-11 14:18
自由建客
我知道 lst 中有个值为 "hello" 的元素,下标不清楚,我要删除它!

Re: bash 如何删除数组中的元素

发表于 : 2012-03-11 14:26
枫叶饭团
想到个非常sb的办法,列遍所有元素和hello进行比较。。。等于的时候附'' 算叫删除吧

Re: bash 如何删除数组中的元素

发表于 : 2012-03-11 14:33
自由建客
for 循环只能取值,取不到下标!

Re: bash 如何删除数组中的元素

发表于 : 2012-03-11 14:34
自由建客
先规整数组
lst=("${lst[@]}")
再用 while 循环遍历,取得下标
然后删除。

好蛋疼!

Re: bash 如何删除数组中的元素

发表于 : 2012-03-11 19:24
fnan
for i in ${!arry[@]};do [[ ${arry[$i]} == "hello" ]] && unset arry[$i];done

Re: bash 如何删除数组中的元素

发表于 : 2012-03-11 20:18
自由建客
fnan,

代码: 全选

>0< ~$ lst=([0]=em0 [3]=em3 [5]=hello [100]=em100)

>0< ~$ echo "${lst[@]}"
em0 em3 hello em100

>0< ~$ for i in ${!lst[@]}; do [[ ${lst[$i]} == "hello" ]] && unset lst[$i]; done

>1< ~$ echo "${lst[@]}"
em0 em3 em100

>0< ~$
效果能达道。请问这个返回 1 是怎么回事?

Re: bash 如何删除数组中的元素

发表于 : 2012-03-12 11:07
Think1st
自由建客 写了:我知道 lst 中有个值为 "hello" 的元素,下标不清楚,我要删除它!
删除Array中值为hello的元素。

代码: 全选

declare -a ARRAY=('how are you' 'hello' 'cmj' 'very ok');
echo ${ARRAY[@]}

ARRAY=( ${ARRAY[@]/hello/} )
echo ${ARRAY[@]}

Re: bash 如何删除数组中的元素

发表于 : 2012-03-12 16:30
自由建客
Think1st, 你这段 bug 太多了 :em09

Re: bash 如何删除数组中的元素

发表于 : 2012-03-12 19:11
fnan
自由建客 写了:fnan,

代码: 全选

>0< ~$ lst=([0]=em0 [3]=em3 [5]=hello [100]=em100)

>0< ~$ echo "${lst[@]}"
em0 em3 hello em100

>0< ~$ for i in ${!lst[@]}; do [[ ${lst[$i]} == "hello" ]] && unset lst[$i]; done

>1< ~$ echo "${lst[@]}"
em0 em3 em100

>0< ~$
效果能达道。请问这个返回 1 是怎么回事?
#印象中似乎不会问这种问题:
试试: for i in ${!lst[@]}; do [[ ${lst[$i]} == "hello" ]] && unset lst[$i] && break; done

Re: bash 如何删除数组中的元素

发表于 : 2012-03-15 14:56
Think1st
自由建客 写了:Think1st, 你这段 bug 太多了 :em09

代码: 全选

$ declare -a ARRAY=('how are you' 'hello' 'cmj' 'very ok');
$ echo ${ARRAY[@]}
how are you hello cmj very ok
$ ARRAY=( ${ARRAY[@]/hello/} )
$ echo ${ARRAY[@]}
how are you cmj very ok
木有问题哦。我的bash 是4.1.5,这个特性是bash4以上的有木有?