导读 | 在字典中,字典存储一组键,每个键都有一个与之关联的值。可以使用对应的键在字典中插入、检索或更新值。字典数据结构针对基于键值的快速检索进行了优化,因此通常使用哈希表来实现。在不同的编程语言中,字典通常有不同的名称,例如关联数组、hashmap 或映射。在本文中,将演示如何在 bash 中使用键值字典。以下使用 示例来说明字典的详细用法。 |
声明字典变量
使用declare -A
显式声明字典。
[root@localhost ~]# declare -A test_var
字典中添加键值对
如果需要在字典中添加键值对,使用下面操作:
[root@localhost ~]# declare -A dic # 添加方式一 [root@localhost ~]# dic=([key1]="value1" [key2]="value2" [key3]="value3") # 添加方式二 [root@localhost ~]# dic[key4]=value4 # 添加方式三,使用变量添加键值对 [root@localhost ~]# var_key1=key5 [root@localhost ~]# var_value1=value5 [root@localhost ~]# dic[$var_key1]=$var_value1
从字典中检索键值对
使用下面方式通过键的名称获取值:
[root@localhost ~]# echo ${dic[key1]} value1 [root@localhost ~]# echo ${dic[$var_key1]} value5
更新字典中的现有键值
更新现有键的值与插入新的键值对没有什么不同。通过更新,现有值会被新值覆盖。
[root@localhost ~]# dic[key1]='puppy' [root@localhost ~]# echo ${dic[@]} value5 value4 value3 value2 puppy
可以看到key1的值被改成 puppy了。
检查字典中是否存在键
如果想检查一个键是否存储在字典中。可以通过检查是否设置了值来测试字典中键的存在(在条件中使用 -v
运算符)。
[root@localhost ~]# if [ -v dic[key1] ];then echo 'key1 exists in dic';fi key1 exists in dic [root@localhost ~]# if [ ! -v dic[key6] ];then echo 'key6 does not exists in dic';fi key6 does not exists in dic
从字典中删除键值对
可以通过使用 unset
语句指定键,从字典中删除现有的键值对。
[root@localhost ~]# unset dic[key1] [root@localhost ~]# unset dic[$var_key1] [root@localhost ~]# echo ${dic[@]} value4 value3 value2
可以看到结果key1和key5的键值都删掉了
遍历字典
另一个常用的功能是遍历,使用${!dic[@]}
来获取所有的键名称,使用${dic[@]}
来获取所有的值。遍历存储在字典中的所有键值对并执行一些操作:
[root@localhost ~]# vim dic_for.sh [root@localhost ~]# cat dic_for.sh #!/bin/bash declare -A dic dic=([key1]="value1" [key2]="value2" [key3]="value3") for key in "${!dic[@]}" do echo "$key - ${dic[$key]}" done [root@localhost ~]# sh dic_for.sh key3 - value3 key2 - value2 key1 - value1
本文原创地址://gulass.cn/bash-key-value-dic.html编辑:逄增宝,审核员:逄增宝