当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 10 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : bash 如何删除数组中的元素
帖子发表于 : 2012-03-11 14:18 
头像

注册: 2008-07-30 23:21
帖子: 13427
地址: [email protected]
系统: Debian stable AMD64
送出感谢: 38
接收感谢: 127
我知道 lst 中有个值为 "hello" 的元素,下标不清楚,我要删除它!


_________________
(2015-11-16 更新)适合 WM 的截图脚本
(2015-08-24 更新)Debian、Ubuntu 源列表说明
(2013-02-01 首发)文字如何绘出
▷▷ 【更 多 在 此】 ◁◁
箪食瓢饮随遇安,不求栋梁求参天。
【初韵】一门牛逼的编程语言。


页首
 用户资料  
 
2 楼 
 文章标题 : Re: bash 如何删除数组中的元素
帖子发表于 : 2012-03-11 14:26 
头像

注册: 2010-06-16 1:05
帖子: 14668
地址: Tencent
系统: Mac OS X
送出感谢: 1
接收感谢: 153
想到个非常sb的办法,列遍所有元素和hello进行比较。。。等于的时候附'' 算叫删除吧


_________________
twitter求fo:http://twitter.com/maplebeats
博客求踩:http://maplebeats.com


页首
 用户资料  
 
3 楼 
 文章标题 : Re: bash 如何删除数组中的元素
帖子发表于 : 2012-03-11 14:33 
头像

注册: 2008-07-30 23:21
帖子: 13427
地址: [email protected]
系统: Debian stable AMD64
送出感谢: 38
接收感谢: 127
for 循环只能取值,取不到下标!


_________________
(2015-11-16 更新)适合 WM 的截图脚本
(2015-08-24 更新)Debian、Ubuntu 源列表说明
(2013-02-01 首发)文字如何绘出
▷▷ 【更 多 在 此】 ◁◁
箪食瓢饮随遇安,不求栋梁求参天。
【初韵】一门牛逼的编程语言。


页首
 用户资料  
 
4 楼 
 文章标题 : Re: bash 如何删除数组中的元素
帖子发表于 : 2012-03-11 14:34 
头像

注册: 2008-07-30 23:21
帖子: 13427
地址: [email protected]
系统: Debian stable AMD64
送出感谢: 38
接收感谢: 127
先规整数组
lst=("${lst[@]}")
再用 while 循环遍历,取得下标
然后删除。

好蛋疼!


_________________
(2015-11-16 更新)适合 WM 的截图脚本
(2015-08-24 更新)Debian、Ubuntu 源列表说明
(2013-02-01 首发)文字如何绘出
▷▷ 【更 多 在 此】 ◁◁
箪食瓢饮随遇安,不求栋梁求参天。
【初韵】一门牛逼的编程语言。


页首
 用户资料  
 
5 楼 
 文章标题 : Re: bash 如何删除数组中的元素
帖子发表于 : 2012-03-11 19:24 

注册: 2009-07-01 22:04
帖子: 919
送出感谢: 0 次
接收感谢: 13
for i in ${!arry[@]};do [[ ${arry[$i]} == "hello" ]] && unset arry[$i];done


_________________
bash不如perl精妙,学不到lisp的皮毛,远不够c++强悍,不过可以用。



_________________
评价: 3.7% 自由建客
 
页首
 用户资料  
 
6 楼 
 文章标题 : Re: bash 如何删除数组中的元素
帖子发表于 : 2012-03-11 20:18 
头像

注册: 2008-07-30 23:21
帖子: 13427
地址: [email protected]
系统: Debian stable AMD64
送出感谢: 38
接收感谢: 127
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 是怎么回事?


_________________
(2015-11-16 更新)适合 WM 的截图脚本
(2015-08-24 更新)Debian、Ubuntu 源列表说明
(2013-02-01 首发)文字如何绘出
▷▷ 【更 多 在 此】 ◁◁
箪食瓢饮随遇安,不求栋梁求参天。
【初韵】一门牛逼的编程语言。


页首
 用户资料  
 
7 楼 
 文章标题 : Re: bash 如何删除数组中的元素
帖子发表于 : 2012-03-12 11:07 
头像

注册: 2012-02-07 23:08
帖子: 45
送出感谢: 1
接收感谢: 2
自由建客 写道:
我知道 lst 中有个值为 "hello" 的元素,下标不清楚,我要删除它!

删除Array中值为hello的元素。

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

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


_________________
在这里,问题比答案更抢手。


页首
 用户资料  
 
8 楼 
 文章标题 : Re: bash 如何删除数组中的元素
帖子发表于 : 2012-03-12 16:30 
头像

注册: 2008-07-30 23:21
帖子: 13427
地址: [email protected]
系统: Debian stable AMD64
送出感谢: 38
接收感谢: 127
Think1st, 你这段 bug 太多了 :em09


_________________
(2015-11-16 更新)适合 WM 的截图脚本
(2015-08-24 更新)Debian、Ubuntu 源列表说明
(2013-02-01 首发)文字如何绘出
▷▷ 【更 多 在 此】 ◁◁
箪食瓢饮随遇安,不求栋梁求参天。
【初韵】一门牛逼的编程语言。


页首
 用户资料  
 
9 楼 
 文章标题 : Re: bash 如何删除数组中的元素
帖子发表于 : 2012-03-12 19:11 

注册: 2009-07-01 22:04
帖子: 919
送出感谢: 0 次
接收感谢: 13
自由建客 写道:
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


_________________
bash不如perl精妙,学不到lisp的皮毛,远不够c++强悍,不过可以用。


页首
 用户资料  
 
10 楼 
 文章标题 : Re: bash 如何删除数组中的元素
帖子发表于 : 2012-03-15 14:56 
头像

注册: 2012-02-07 23:08
帖子: 45
送出感谢: 1
接收感谢: 2
自由建客 写道:
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以上的有木有?


_________________
在这里,问题比答案更抢手。


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 10 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 0 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译