关于shell中的数组-关联数组-associative array

在bash-shell中,数组主要分2种,indexed array 和 associative array

在linux下对于新版的bash,一般都是支持关联数组,关联数组有点像其他语言的字典一样,键值对形式

注:对于关联数组,对于元素(键值对),是无序的,在遍历时,或者输出全部键/值,可以观察出

关于本文,如需要转载,注明出处:https://www.cnblogs.com/5201351

如有问题,也可以联系笔者QQ:5201351

例如,我们可以创建一个叫做 color 的关联数组,并用颜色名字作为下标

不同于普通数组,关联数组必须使用带有-A选项的 declare 命令进行显示声明的方式创建

declare -A color
color[black]=#000000
color["red"]="#ff0000"
color["green"]="#00ff00"
color["blue"]="#0000ff"

也可以在定义的同时赋值,每个键值对,使用空格隔开:

笔者测试过,不加declare -A显示声明,数组还是会被视为索引数组,就一个元素,而且是取的最后一个键对应的值

declare -A color=([black]=#000000 ["red"]="#ff0000" ["green"]="#00ff00" ["blue"]="#0000ff")

访问关联数组元素,需要指定键,以上例为准,如果不指定键,将返回空值:

${color[black]}

获取所有的关联数组元素的值:

${array_name[@]}

${array_name[*]}

获取所有的关联数组元素的键:
${!array_name[@]}

${!array_name[*]}

关于@与*的区别:如shell脚本特殊变量一样,可以通过for循环时,对数组变量加上双引号看出微小的区别

如"${array_name[@]}"和"${array_name[*]}" ,因此有些场景可能使用@可能更合适一点,但大多数情况下两者没有区别的

 

尊重别人的劳动成果 转载请务必注明出处:https://www.cnblogs.com/5201351/p/15175013.html

作者:一名卑微的IT民工

出处:https://www.cnblogs.com/5201351

本博客所有文章仅用于学习、研究和交流目的,欢迎非商业性质转载。

博主的文章没有高度、深度和广度,只是凑字数。由于博主的水平不高,不足和错误之处在所难免,希望大家能够批评指出。

博主是利用读书、参考、引用、抄袭、复制和粘贴等多种方式打造成自己的文章,请原谅博主成为一个卑微的IT民工!

原文地址:https://www.cnblogs.com/5201351/p/15175013.html