现在最新的 Bash Shell 已经支持关联数组了。关联数组使用字符串作为下标,而不是整数,这样可以做到见名知意。
关联数组也称为“键值对(key-value)”数组,键(key)也即字符串形式的数组下标,值(value)也即元素值。
例如,我们可以创建一个叫做 color 的关联数组,并用颜色名字作为下标。
1. declare -A color
2. color["red"]="#ff0000"
3. color["green"]="#00ff00"
4. color["blue"]="#0000ff"
也可以在定义的同时赋值:
declare -A color=(["red"]="#ff0000", ["green"]="#00ff00", ["blue"]="#0000ff")
不同于普通数组,关联数组必须使用带有-A 选项的 declare 命令创建。
访问关联数组元素
访问关联数组元素的方式几乎与普通数组相同,具体形式为:
array_name["index"]
例如:
1. color["white"]="#ffffff"
2. color["black"]="#000000"
加上$()即可获取数组元素的值:
$(array_name["index"])
例如:
1. echo $(color["white"])
2. white=$(color["black"])
获取所有元素的下标和值
使用下面的形式可以获得关联数组的所有元素值:
${array_name[@]}
${array_name[*]}
使用下面的形式可以获取关联数组的所有下标值:
${!array_name[@]}
${!array_name[*]}
获取关联数组长度
使用下面的形式可以获得关联数组的长度:
${#array_name[*]}
${#array_name[@]}
关联数组实例演示:
1. #!/bin/bash
2.
3. declare -A color
4. color["red"]="#ff0000"
5. color["green"]="#00ff00"
6. color["blue"]="#0000ff"
7. color["white"]="#ffffff"
8. color["black"]="#000000"
9.
10. #获取所有元素值
11. for value in ${color[*]}
12. do
13. echo $value
14. done
15. echo "****************"
16.
17. #获取所有元素下标(键)
18. for key in ${!color[*]}
19. do
20. echo $key
21. done
22. echo "****************"
23.
24. #列出所有键值对
25. for key in ${!color[@]}
26. do
27. echo "${key} -> ${color[$key]}"
28. done
运行结果:
#ff0000
#0000ff
#ffffff
#000000
#00ff00
****************
red
blue
white
black
green
****************
red -> #ff0000
blue -> #0000ff
white -> #ffffff
black -> #000000
green -> #00ff00