Shell 关联数组

Shell提供了关联数组,与很多语言的Map相信。

关联数组存储 key-value数据。

1 使用步骤

1)必须严格通过declare -A声明关联数组。

declare -A 数组变量

-a表示普通数组,-A表示关联数组。

2)可以通过( )进行初始化

数组变量=([key1]=value1 [key2]=value2 … [keyn]=valuen)

注意[ ]不能省略;

如果省略,变成了普通数组,整个作为一个元素值。

3)读写与普通数组一致

数组变量[key]=value

${数据变量[key]}

示例

declare -A arr1
arr1=([bj]="北京" [sh]="上海" [gz]="广州" [sz]="深圳" [xt]="小步教程")
echo ${arr1[@]}
echo "第1个元素:"
echo ${arr1[bj]}
 
arr1[bj]="北京北京"
echo "第1个元素:${arr1[bj]}"

img

2 遍历

关联数组的操作也与数组操作一致。例如:求数组元素个数、所有元素,等。

遍历关联数组主要通过for in下标集合的形式,可以同时获取key、value。

示例

declare -A arr1
arr1=([bj]="北京" [sh]="上海" [gz]="广州" [sz]="深圳" [xt]="小步教程")

for key in ${!arr1[*]}
do
    echo "key值:${key},value值:${arr1[$key]}"
done

元素取value值时key前需加$,外层的$并不能识别key是变量。

img