Linux shell中的关联数组
关联数组是这样的数组,它的每个数据元素与一个键相对配对,该键用于识别数据元素。由于散列函数用来创建关联数组中的指定元素,并在关联数组中查找指定元素,因此关联数组通常称为散列。
比如想设置一个数组,名为age,根据人名可以查找对应的年龄
LiLei 28
HanMeimei 27
Lily 26
Lucy 26
声明之后,可以用两种方法将元素添加到关联数组中。
--利用内嵌“索引-值”列表的方法,提供一个“索引-值”列表:
$ ass_array=([index1]=val1 [index2]=val2)
--使用独立的“索引-值”进行赋值:
$ ass_array[index1]=val1
$ ass_array'index2]=val2
示例:
qingsong@db2a:/tmp$ age=([Lilei]=28 [HanMeimei]=27)
qingsong@db2a:/tmp$ age[Lily]=26
qingsong@db2a:/tmp$ age[Lucy]=26
Age of HanMeimei is 27
qingsong@db2a:/tmp$ echo "Age of Lily is ${age[Lily]}"
Age of Lily is 26
$ echo ${!array_var[*]}
也可以使用:
$ echo ${!array_var[@]
示例:
qingsong@db2a:/tmp$ echo ${!age[@]}
Lilei HanMeimei Lucy Lily
qingsong@db2a:/tmp$ echo ${!age[*]}
Lilei HanMeimei Lucy Lily
关联数组是这样的数组,它的每个数据元素与一个键相对配对,该键用于识别数据元素。由于散列函数用来创建关联数组中的指定元素,并在关联数组中查找指定元素,因此关联数组通常称为散列。
比如想设置一个数组,名为age,根据人名可以查找对应的年龄
LiLei 28
HanMeimei 27
Lily 26
Lucy 26
声明
qingsong@db2a:/tmp$ declare -A age赋值
有两种办法声明之后,可以用两种方法将元素添加到关联数组中。
--利用内嵌“索引-值”列表的方法,提供一个“索引-值”列表:
$ ass_array=([index1]=val1 [index2]=val2)
--使用独立的“索引-值”进行赋值:
$ ass_array[index1]=val1
$ ass_array'index2]=val2
示例:
qingsong@db2a:/tmp$ age=([Lilei]=28 [HanMeimei]=27)
qingsong@db2a:/tmp$ age[Lily]=26
qingsong@db2a:/tmp$ age[Lucy]=26
根据索引名,查找值
qingsong@db2a:/tmp$ echo "Age of HanMeimei is ${age[HanMeimei]}"Age of HanMeimei is 27
qingsong@db2a:/tmp$ echo "Age of Lily is ${age[Lily]}"
Age of Lily is 26
获取索引列表
以用下面的方法获取数组的索引列表:$ echo ${!array_var[*]}
也可以使用:
$ echo ${!array_var[@]
示例:
qingsong@db2a:/tmp$ echo ${!age[@]}
Lilei HanMeimei Lucy Lily
qingsong@db2a:/tmp$ echo ${!age[*]}
Lilei HanMeimei Lucy Lily