Shell关联数组
现在最新的 Bash Shell 已经支持关联数组了。关联数组使用字符串作为下标,而不是整数,这样可以做到见名知意。
关联数组也称为“键值对(key-value)”数组,键(key)也即字符串形式的数组下标,值(value)也即元素值。
例如,我们可以创建一个叫做 color 的关联数组,并用颜色名字作为下标。
加上
关联数组实例演示:
#ff0000
#0000ff
#ffffff
#000000
#00ff00
****************
red
blue
white
black
green
****************
red -> #ff0000
blue -> #0000ff
white -> #ffffff
black -> #000000
green -> #00ff00
关联数组也称为“键值对(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命令:设置变量属性
访问关联数组元素
访问关联数组元素的方式几乎与普通数组相同,具体形式为:array_name["index"]
例如:color["white"]="#ffffff" color["black"]="#000000"
加上
$()
即可获取数组元素的值:
$(array_name["index"])
例如:echo $(color["white"]) white=$(color["black"])
获取所有元素的下标和值
使用下面的形式可以获得关联数组的所有元素值:
${array_name[@]}
${array_name[*]}
${!array_name[@]}
${!array_name[*]}
获取关联数组长度
使用下面的形式可以获得关联数组的长度:
${#array_name[*]}
${#array_name[@]}
关联数组实例演示:
#!/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运行结果:
#ff0000
#0000ff
#ffffff
#000000
#00ff00
****************
red
blue
white
black
green
****************
red -> #ff0000
blue -> #0000ff
white -> #ffffff
black -> #000000
green -> #00ff00
所有教程
- C语言入门
- C语言编译器
- C语言项目案例
- 数据结构
- C++
- STL
- C++11
- socket
- GCC
- GDB
- Makefile
- OpenCV
- Qt教程
- Unity 3D
- UE4
- 游戏引擎
- Python
- Python并发编程
- TensorFlow
- Django
- NumPy
- Linux
- Shell
- Java教程
- 设计模式
- Java Swing
- Servlet
- JSP教程
- Struts2
- Maven
- Spring
- Spring MVC
- Spring Boot
- Spring Cloud
- Hibernate
- Mybatis
- MySQL教程
- MySQL函数
- NoSQL
- Redis
- MongoDB
- HBase
- Go语言
- C#
- MATLAB
- JavaScript
- Bootstrap
- HTML
- CSS教程
- PHP
- 汇编语言
- TCP/IP
- vi命令
- Android教程
- 区块链
- Docker
- 大数据
- 云计算