Redian新闻
>
教你在 bash 中使用键值字典

教你在 bash 中使用键值字典

科技

在字典中,字典存储一组键,每个键都有一个与之关联的值。可以使用对应的键在字典中插入、检索或更新值。字典数据结构针对基于键值的快速检索进行了优化,因此通常使用哈希表来实现。在不同的编程语言中,字典通常有不同的名称,例如关联数组、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

END

官方站点:www.linuxprobe.com

Linux命令大全:www.linuxcool.com

刘遄老师QQ:5604241

Linux技术交流群:3762708

(新群,火热加群中……)

想要学习Linux系统的读者可以点击"阅读原文"按钮来了解书籍《Linux就该这么学》,同时也非常适合专业的运维人员阅读,成为辅助您工作的高价值工具书!


微信扫码关注该文公众号作者

戳这里提交新闻线索和高质量文章给我们。
相关阅读
《科学》禁止在学术论文中使用ChatGPT文本,《自然》:可以用,但要说明|环球科学要闻喝茶,喝茶。。。在 C 语言中使用 getopt 解析命令行短选项 | Linux 中国“指出”、“强调”、“认为”,怎么在新闻通稿中使用?细颈瓶崇洋媚外大撒币 草菅人命不把人民当江山如何在 Java 中使用方法 | Linux 中国支持麦姐和沈香,也谈同情心和廉耻教你在 CentOS 7.9 中使用 PBIS 工具加入 AD 域通用汽车探索在车辆中使用ChatGPT如何在 Linux 系统中使用 Ventoy 创建多重引导的 U 盘 | Linux 中国Rust 基础系列 #2: 在 Rust 程序中使用变量和常量 | Linux 中国UNReal 每周一场主题电音节|本周六𝘿𝙧𝙪𝙢 𝙣' 𝘽𝙖𝙨𝙨 炸裂舞池!教你在 Linux 上写一个进度条小程序美国年长者热中使用折扣优惠人数大增,你也是吗?税务局建议你在网上报税 以下是如何使用最新的NETFILE辞旧迎新之旅: 大自然的颂歌教你如何用 10 行 bash shell 脚本监控 Linux?如何在 Linux 中使用旧相机作为网络摄像头 | Linux 中国【LightCourse宣讲会】教你在华大如何规划学业,拿到GPA4.0!排错平移,两女子插队发飙建议去新华字典上班亚马逊已在多种工作职能中使用ChatGPT,包括编写代码等离谱!人妻偷吃男同事!恬不知耻发送「我的身体你在使用」露骨对话竟成判赔铁证!指出、强调、认为,怎么在会议简报中使用?苹果公司承诺在其设备中使用更多回收钴60名中国儿科专家合作的育儿百科,字典般高效解决0~12岁孩子常见健康问题手把手教你在云上构建云原生应用!| Q推荐3月1日开始报税了,手把手教你在新加坡如何交税【滋味】一口香嫩一口鲜,教你在家做狮子头!CTO:禁止在项目中使用 BeanUtils 属性转换工具。。。在澳洲报税少不了,手把手教你在澳洲申请税号​!CTO:谁在项目中使用Arrays.asList、ArrayList.subList,就立马滚蛋!男生女生均可报名:乐乐教你在陌上高性价比脱单!你在为B端需求管理头秃吗?阿里产品专家教你3招轻松应对苹果:将于2025年实现在电池中使用100%再生钴我的朋友越来越少了!
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。