读书频道 > 系统 > linux > Shell脚本编程诀窍——适用于Linux、Bash等
9.4.3 从数组中删除元素
2012-09-10 17:07:04     我来说两句 
收藏    我要投稿   
本书介绍shell脚本编程,主要针对Bourne shell与POSIX兼容的shell,但也广泛涵盖了新近的一些发展情况,尤其是bash shell。bash shell几乎总是会包含在GNU/Linux操作系统中,也包含在了大多数商业Unix中。另外...  立即去当当网订购
从数组中删除元素与删除变量相同。我们可以使用myarray[3]=或者unset myarray[3]。同样还可以unset整个数组。然而,myarray=本身只会清除数组中第一个元素的值。所有这些情况都出现在下面的代码中。
 
$ for act in `seq 0 $((${#activities[@]} - 1))`
> do
>   echo "Activity $act: ${activities[$act]}"
> done
Activity 0: swimming
Activity 1: water skiing
Activity 2: canoeing
Activity 3: white-water rafting
Activity 4: surfing
Activity 5: scuba diving
Activity 6: climbing
Activity 7: walking
Activity 8: cycling
Activity 9: flying
Activity 10: gliding
Activity 11: parachuting
$ activities[7]=
$ for act in `seq 0 $((${#activities[@]} - 1))`
> do
>   echo "Activity $act: ${activities[$act]}"
> done
Activity 0: swimming
Activity 1: water skiing
Activity 2: canoeing
Activity 3: white-water rafting
Activity 4: surfing
Activity 5: scuba diving
Activity 6: climbing
Activity 7:
Activity 8: cycling
Activity 9: flying
Activity 10: gliding
Activity 11: parachuting
$
 
这样做的结果是得到一个稀疏数组。使用unset activities[7]几乎可以得到相同的效果。如第7章讨论过的,将变量赋值为空字符串与完全删除是有区别的,但它们的区别只有在使用${variable+string}或${variable?string}形式时才会比较明显。
 
$ echo ${activities[7]
 
$ echo ${activities[7]+"Item 7 is set"}
Item 7 is set
$ unset activities[7]
$ echo ${activities[7]+"Item 7 is set"}
 
$
 
另外,不使用索引来引用数组会被解释成对数组中第一个元素的引用。因此,按照这样的方式清除数组只会删除数组的第一项。
 
$ activities=
$ for act in `seq 0 $((${#activities[@]} - 1))`
> do
>   echo "Activity $act: ${activities[$act]}"
> done
Activity 0:
Activity 1: water skiing
Activity 2: canoeing
Activity 3: white-water rafting
Activity 4: surfing
Activity 5: scuba diving
Activity 6: climbing
Activity 7:
Activity 8: cycling
Activity 9: flying
Activity 10: gliding
Activity 11: parachuting
 
如果对activities数组本身进行unset,则这个数组都会消失。尽管可以使用unset myarray [*],但将数组整个删除才是正确的。
 
$ unset activities
$ for act in `seq 0 $((${#activities[@]} - 1))`
> do
>   echo "Activity $act: ${activities[$act]}"
> done
$
点击复制链接 与好友分享!回本站首页
分享到: 更多
您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力  
上一篇:9.4.2 向数组追加元素
下一篇:9.5 高级技术
相关文章
图文推荐
3.3.6 GNOME的软件管
3.3.5 GNOME的文件管
3.3.4 GNOME的窗口管
3.3.3 收藏夹和快捷
排行
热门
文章
下载
读书

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训
版权所有: 红黑联盟--致力于做最好的IT技术学习网站