当前位置: 首页 > news >正文

Linux bash 关联数组

目录

  • 一. 关联数组定义
  • 二. 访问关联数组
  • 三. 元素的添加与删除
  • 四. 键值对的获取与遍历
  • 五. 实际应用
    • 5.1 读取封装配置文件内容
    • 5.2 收集系统信息


一. 关联数组定义

  • 从 Bash 4.0 开始,Bash 支持关联数组。
  • 关联数组允许你将配对,并通过键来访问值,类似于其他编程语言中的 Map。

⏹通过declare -A来创建一个关联数组

declare -A 关联数组名称

⏹可以在创建关联数组的时候为其赋值

declare -A personMap=([name]="贾飞天"[age]=18[address]='地球'
)

二. 访问关联数组

# 定义一个关联数组
declare -A personMap=([name]="贾飞天"[age]=18[address]='地球'
)

⏹根据key访问对应的value

echo ${personMap["name"]}  # 贾飞天

⏹key也可以是变量

mykey="age"
echo ${personMap[$mykey]}  # 18

三. 元素的添加与删除

⏹元素的添加

personMap["car"]="红旗"
echo ${personMap["car"]}  # 红旗# 获取所有的key
echo "${!personMap[@]}"  # address age car name

⏹元素的删除

# 元素删除前,获取所有的key
echo "${!personMap[@]}"  # address age car name# 删除指定的key
unset personMap["car"]# 元素删除后,获取所有的key
echo "${!personMap[@]}"  # address age name

四. 键值对的获取与遍历

⏹获取所有的键

$ echo "${!personMap[@]}" | xargs -n 1
address
age
name

⏹获取所有的值

$ echo "${personMap[@]}" | xargs -n 1
地球
18
贾飞天

⏹遍历关联数组

for key in "${!personMap[@]}"; doecho "$key: ${personMap[$key]}"
done
# address: 地球
# age: 18
# name: 贾飞天

五. 实际应用

5.1 读取封装配置文件内容

⏹有配置文件如下

username=admin
password=secret
host=localhost
port=8080

⏹读取配置文件内容到关联数组中

# 声明一个关联数组
declare -A config# 读取配置文件内容到关联数组中
while IFS='=' read -r key value; doconfig["$key"]="$value"
done < my_conf.ini# 遍历关联数组,打印配置文件的内容
for key in "${!config[@]}"; doecho "$key: ${config[$key]}"echo "===================="
done# host: localhost
# ====================
# password: secret
# ====================
# username: admin
# ====================
# port: 8080
# ====================

5.2 收集系统信息

# 将系统信息收集到关联数组中
declare -A sysinfo=([hostname]=$(hostname)[os]=$(uname -o)[kernel]=$(uname -r)
)# 输出系统信息
for key in "${!sysinfo[@]}"; doecho "$key: ${sysinfo[$key]}"
done# hostname: ubuntu
# kernel: 4.4.0-166-generic
# os: GNU/Linux
http://www.lryc.cn/news/439221.html

相关文章:

  • 选择排序
  • SQL数据库(MySQL)
  • 在MindSearch中使用SiliconCloud:全面指南**
  • C++(2)之Linux多线程服务端编程总结
  • 【AI视频】复刻抖音爆款AI数字人作品初体验
  • Mysql 面试题总结
  • stack - queue
  • 微软九月补丁星期二发现了 79 个漏洞
  • 研1日记12
  • Rocky Linux 9安装mysqlclient库报错的解决方法
  • Spring Boot母婴商城:安全、便捷、高效
  • php实现kafka
  • YOLOv10改进系列,YOLOv10损失函数更换为Powerful-IoU(2024年最新IOU),助力高效涨点
  • 工具知识 | Linux 常用命令参考手册
  • mysql 常用知识点总结
  • conda常用指令
  • 前后端分离项目--下载功能
  • PMP--一模--解题--81-90
  • 计算机网络 --- 【2】计算机网络的组成、功能
  • 『功能项目』切换职业技能面板【49】
  • 寻找排名好的自闭症学校?这些关键因素不可忽视
  • Git常用命令(记录)
  • STM32+ESP8266 WiFi连接机智云平台APP远程控制教程
  • 学懂C++(六十):C++ 11、C++ 14、C++ 17、C++ 20新特性大总结(万字详解大全)
  • 杭电1008电梯
  • 【Python小知识 - 2】:在VSCode中切换Python解释器版本
  • ubuntu meson安装
  • 记者协会评审系统-需求分析
  • python 检索与该查询最相似的句子 使用库hflayers和sentence_transformers来实现遇到的问题
  • 计算机毕业设计 在线新闻聚合平台的设计与实现 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试