bash数组应用之:数组下标的问题

bash数组应用之:数组下标的问题,第1张

数组下标的讨论

数组删除的时候我们碰到的空槽的问题,也就是一个数组元素删除后,留下一个空槽下标,这对高级语言的用户来说会觉得很诧异。

简单来说,我们可以这么理解,bash里面数组的下标,不是位置的偏移,而是具体的值,就像map的key一样;后面我们看到关联数组使用字符串作为下标。

所以当我们定义一个数组的时候,数组中的每一个元素都会被分配一个下标;规则如下:

执行结果:

另一个显示定义下标的例子,下标从非零值开始。

执行结果:

执行结果:

DD,EE没有定义下标,那么DD从前面一个CC的下标(2)加一作为其下标,即(3);依次类推EE使用4作为其下标。

执行结果:

这个执行结果和前面显示定义的结果是一样的,虽然DD和EE没有定义下标,bash自动根据前面的下标值加1为它赋值。

执行结果:

执行结果:

执行结果:

看到AA的下标被定义成了4,然后BB的下标被定义成了3,紧接着CC没有定义下标,于是采用前面下标的下一个值,即BB下标的下一个值,就是4,这样就把AA给覆盖掉了,最终下标是44的元素是CC了。

shell中数组的定义是使用 小括号来表示的,其中数组元素之间用空格作为分隔,比如:

a. 访问特定的数组元素,比如访问第2个元素,那么利用下标index=1进行访问: index支持负值,表示从后向前访问, 第一个元素的index =0, 如果从后向前,那么最后一个元素index 可以表示为index=-1.

b. 访问所有的数组元素,这时候index 用* 表示就可以了;如下:

c. 获取数组元素的个数:

在上述获取所有元素的前面加上一个# 就可以了,如下:

a. 根据index 进行修改:

b. 追加元素到数组中:

当数组名称中含有shell变量的时候,此时随着shell变量的变化,那么引用的数组自然也就不同;此时可以通过如下的方式实现 变量的嵌套:

嵌套变量有两个$符号,一个用来组合成完整的变量名称,另一个用于 标记组合后的内容是一个变量,而后一个$符号需要用 单引号括起来,剩余的部分需要用双引号括起来;然后用echo 来显示这个变量,但因为 单引号 引用的字符不会被shell解释,所以输出结果是单引号,此时用eval 来调用echo 语句就可以实现解析了;具体实例如下:


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/bake/11696768.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存