在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