shell unset之后数组元素个数为_shell内建命令unset和shell数组操作

unset命令

作用:删除变量或者函数

语法:unset  [-fv]  变量名或函数名

-f   仅删除函数

-v   仅删除变量

此命令多用于删除环境变量,不过本人经常用它来删除数组的元素,但是需要注意,用unset操作数组风险较大,稍有不慎就会出错。例如:

a=(0 1 2 3 4 5)

echo ${#a[@]}            #输出6

unset a[0]

echo ${#a[@]}            #输出5

echo ${a[@]}             #输出1 2 3 4 5

到此好像也没什么问题,继续

echo ${a[0]}        #输出空,而不是预想的1

echo ${a[1]}        #输出1,而不是预想的2

这是怎么回事呢?以下是本人总结的:

第1步:shell给出了6个位置,分别放0、1、2、3、4、5,并且分别给它们编了号0、1、2、3、4、5,并且把这些位置和编号的对应关系记下来,这种关系是不会轻易改变的。

第2步:输出元素的个数,肯定是6没问题。

第3步:删除0号元素(也就是0),这里的删除其实是把位置清空,但位置还在。并不会出现第三种情况那样的,就是0号元素没了之后其他元素依次往前推,而最后一个位置消失的情况。

第4步:输出元素个数,肯定是5个没问题。

第5步:输出各元素,肯定是1 2 3 4 5

第6步:输出a[0],此时0号位置根本没元素,肯定是空。

第7步:输出a[1],此时1号位置放的就是1没问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值