教你在 Bash 中使用键值字典,你会了吗

在不同的编程语言中,字典通常有不同的名称,例如关联数组、hashmap 或映射。在本文中,将演示如何在 bash 中使用键值字典。以下使用 shell 脚本示例来说明字典的详细用法。声明字典变量

在不同的编程语言中,字典通常有不同的名称,例如关联数组、hashmap 或映射。在本文中,将演示如何在 bash 中使用键值字典。以下使用 shell 脚本示例来说明字典的详细用法。
声明字典变量

在字典中,字典存储一组键,每个键都有一个与之关联的值。可以使用对应的键在字典中插入、检索或更新值。字典数据结构针对基于键值的快速检索进行了优化,因此通常使用哈希表来实现。在不同的编程语言中,字典通常有不同的名称,例如关联数组、hashmap 或映射。在本文中,将演示如何在 bash 中使用键值字典。以下使用 shell 脚本示例来说明字典的详细用法。

声明字典变量

使用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

图片

©本文为清一色官方代发,观点仅代表作者本人,与清一色无关。清一色对文中陈述、观点判断保持中立,不对所包含内容的准确性、可靠性或完整性提供任何明示或暗示的保证。本文不作为投资理财建议,请读者仅作参考,并请自行承担全部责任。文中部分文字/图片/视频/音频等来源于网络,如侵犯到著作权人的权利,请与我们联系(微信/QQ:1074760229)。转载请注明出处:清一色财经

(0)
打赏 微信扫码打赏 微信扫码打赏 支付宝扫码打赏 支付宝扫码打赏
清一色的头像清一色管理团队
上一篇 2023年5月8日 01:19
下一篇 2023年5月8日 01:19

相关推荐

发表评论

登录后才能评论

联系我们

在线咨询:1643011589-QQbutton

手机:13798586780

QQ/微信:1074760229

QQ群:551893940

工作时间:工作日9:00-18:00,节假日休息

关注微信