现在最新的 Bash Shell 已经支持关联数组了。关联数组使用字符串作为下标,而不是整数,这样可以做到见名知意。
关联数组也称为“键值对(key-value)”数组,键(key)也即字符串形式的数组下标,值(value)也即元素值。
例如,我们可以创建一个叫做 color 的关联数组,并用颜色名字作为下标。
- declare -A color
- color["red"]="#ff0000"
- color["green"]="#00ff00"
- color["blue"]="#0000ff"
也可以在定义的同时赋值:
- declare -A color=(["red"]="#ff0000", ["green"]="#00ff00", ["blue"]="#0000ff")
不同于普通数组,关联数组必须使用带有-A选项的 declare 命令创建。关于 declare 命令的详细用法请访问:Shell declare和typeset命令:设置变量属性
访问关联数组元素的方式几乎与普通数组相同,具体形式为:
例如:
- color["white"]="#ffffff"
- color["black"]="#000000"
加上$()即可获取数组元素的值:
例如:
- echo $(color["white"])
- white=$(color["black"])
使用下面的形式可以获得关联数组的所有元素值:
使用下面的形式可以获取关联数组的所有下标值:
使用下面的形式可以获得关联数组的长度:
关联数组实例演示:
- #!/bin/bash
-
- declare -A color
- color["red"]="#ff0000"
- color["green"]="#00ff00"
- color["blue"]="#0000ff"
- color["white"]="#ffffff"
- color["black"]="#000000"
-
- #获取所有元素值
- for value in ${color[*]}
- do
- echo $value
- done
- echo "****************"
-
- #获取所有元素下标(键)
- for key in ${!color[*]}
- do
- echo $key
- done
- echo "****************"
-
- #列出所有键值对
- for key in ${!color[@]}
- do
- echo "${key} -> ${color[$key]}"
- done
运行结果: