Linux shell编程学习笔记16:bash中的关联数组-CSDN博客
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
上一节我们探讨了普通的数组即使用数字下标来索引数组中不同的元素的数组也可以称之为索引数组。
相比纯粹的数字字符串不仅能表明含义也更便于记忆使用于是就有了关联数组。
一、关联数组概述
bash 从4.0开始支持关联数组关联数组可以使用可以使用任意的字符串、或者整数作为下标来访问数组元素。
与索引数组不同关联数组必须声明。
二、声明关联数组并赋值
一先声明再赋值
1.声明关联数组
格式为
declare -A 关联数组名
2.给关联数组元素赋值
格式为
关联数组名[字符串下标]=值
3.实例
[csdn ~]$ exec bash
[csdn ~]$ declare -A a
[csdn ~]$ a["apple"]=apple
[csdn ~]$ a["boy"]=boy
[csdn ~]$ a["cat"]=cat
[csdn ~]$ echo ${a["apple"]}
apple
[csdn ~]$ echo ${a["boy"]}
boy
[csdn ~]$ echo ${a["cat"]}
cat
在这个实例中我们先声明了关联数组a接着给数组三个元素赋值然后逐一输出每个元素值。
二声明并初始化赋值
1.格式
与普通的索引数组一样我们可以在声明关联数组时同时进行初始化赋值格式如下
declare -A 关联数组名=[字符串下标1]=值1 [字符串下标2]=值2 …… [字符串下标n]=值n
2.实例
[csdn ~]$ declare -A a=(["apple"]=apple ["boy"]=boy ["cat"]=cat)
[csdn ~]$ echo ${a["apple"]}
apple
[csdn ~]$ echo ${a["boy"]}
boy
[csdn ~]$ echo ${a["cat"]}
cat
在这个实例中我们先声明了关联数组a并初始化了三个元素值然后逐一输出每个元素值。
三、获取关联数组所有元素值
方法与普通的索引数组相同。
一格式
我们可以使用* 或 @ 作为数组元素下标来获取具体格式即
${数组名[@]}
或
${数组名[*]}
二实例
[csdn ~]$ declare -A a=(["apple"]=apple ["boy"]=boy ["cat"]=cat)
[csdn ~]$ echo ${a[@]}
cat apple boy
[csdn ~]$ echo ${a[*]}
cat apple boy
四、获取关联数组长度
方法与普通的索引数组相同。
一格式
${#数组名[下标]}
或
${#数组名[下标]}
二实例
[csdn ~]$ declare -A a=(["apple"]=apple ["boy"]=boy ["cat"]=cat)
[csdn ~]$ echo ${#a[@]}
3
[csdn ~]$ echo ${#a[*]}
3
[csdn ~]$ echo ${#a["apple"]}
5
[csdn ~]$ echo ${#a["boy"]}
3
[csdn ~]$ echo ${#a["cat"]}
3
在本例中我们先声明了关联数组a并初始化了三个元素值接着输出数组a的长度然后逐一输出每个元素的长度。
五、列出关联数组所有字符串下标
由于关联数组使用字符串来作为下标来访问元素这些作为下标的字符串就不能重复有时我们想知道已经使用了哪些字符串作为下标那该如何查询呢
一格式
!关联数组名[*]}
或
!关联数组名[@]}
这个格式与获取数组长度相似只是获取数组长度时我们用的是字符#获取关联数组索引时我们使用字符!
二实例
[csdn ~]$ declare -A a=(["a"]=apple ["b"]=boy ["c"]=cat)
[csdn ~]$ echo ${a[*]}
apple boy cat
[csdn ~]$ echo ${!a[*]}
a b c
[csdn ~]$ echo ${!a[@]}
a b c
在本例中我们先声明了关联数组a并初始化了三个元素值接着输出数组a的所有元素值然后分别用两种格式逐一输出数组a的所有字符串下标。