bash 如何删除数组中的元素
- 自由建客
- 帖子: 13468
- 注册时间: 2008-07-30 23:21
- 系统: Debian stable AMD64
bash 如何删除数组中的元素
我知道 lst 中有个值为 "hello" 的元素,下标不清楚,我要删除它!
- 枫叶饭团
- 帖子: 14683
- 注册时间: 2010-06-16 1:05
- 系统: Mac OS X
- 来自: Tencent
- 联系:
Re: bash 如何删除数组中的元素
想到个非常sb的办法,列遍所有元素和hello进行比较。。。等于的时候附'' 算叫删除吧
- 自由建客
- 帖子: 13468
- 注册时间: 2008-07-30 23:21
- 系统: Debian stable AMD64
Re: bash 如何删除数组中的元素
for 循环只能取值,取不到下标!
- 自由建客
- 帖子: 13468
- 注册时间: 2008-07-30 23:21
- 系统: Debian stable AMD64
Re: bash 如何删除数组中的元素
先规整数组
lst=("${lst[@]}")
再用 while 循环遍历,取得下标
然后删除。
好蛋疼!
lst=("${lst[@]}")
再用 while 循环遍历,取得下标
然后删除。
好蛋疼!
-
- 帖子: 919
- 注册时间: 2009-07-01 22:04
Re: bash 如何删除数组中的元素
for i in ${!arry[@]};do [[ ${arry[$i]} == "hello" ]] && unset arry[$i];done
bash不如perl精妙,学不到lisp的皮毛,远不够c++强悍,不过可以用。
- 自由建客
- 帖子: 13468
- 注册时间: 2008-07-30 23:21
- 系统: Debian stable AMD64
Re: bash 如何删除数组中的元素
fnan,
效果能达道。请问这个返回 1 是怎么回事?
代码: 全选
>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< ~$
- Think1st
- 帖子: 45
- 注册时间: 2012-02-07 23:08
Re: bash 如何删除数组中的元素
删除Array中值为hello的元素。自由建客 写了:我知道 lst 中有个值为 "hello" 的元素,下标不清楚,我要删除它!
代码: 全选
declare -a ARRAY=('how are you' 'hello' 'cmj' 'very ok');
echo ${ARRAY[@]}
ARRAY=( ${ARRAY[@]/hello/} )
echo ${ARRAY[@]}
在这里,问题比答案更抢手。
- 自由建客
- 帖子: 13468
- 注册时间: 2008-07-30 23:21
- 系统: Debian stable AMD64
Re: bash 如何删除数组中的元素
Think1st, 你这段 bug 太多了 

-
- 帖子: 919
- 注册时间: 2009-07-01 22:04
Re: bash 如何删除数组中的元素
#印象中似乎不会问这种问题:自由建客 写了:fnan,效果能达道。请问这个返回 1 是怎么回事?代码: 全选
>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< ~$
试试: for i in ${!lst[@]}; do [[ ${lst[$i]} == "hello" ]] && unset lst[$i] && break; done
bash不如perl精妙,学不到lisp的皮毛,远不够c++强悍,不过可以用。
- Think1st
- 帖子: 45
- 注册时间: 2012-02-07 23:08
Re: bash 如何删除数组中的元素
自由建客 写了:Think1st, 你这段 bug 太多了
代码: 全选
$ 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
在这里,问题比答案更抢手。