Linux bash 关联数组

ops/2024/9/23 3:33:21/

目录

  • 一. 关联数组定义
  • 二. 访问关联数组
  • 三. 元素的添加与删除
  • 四. 键值对的获取与遍历
  • 五. 实际应用
    • 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.ppmy.cn/ops/114560.html

相关文章

TCP socket

TCP的socket和UDP大同小异&#xff0c;基本的代码结构都是相同的。一些相同的接口本文就不赘述了&#xff0c;例如&#xff0c;socket,bind&#xff0c;有需要看这篇文章UDP socket 服务端server 两步&#xff1a;初始化服务端&#xff0c;运行服务端 初始化服务端 创建soc…

python selenium网页操作

一、安装依赖 pip install -U seleniumselenium1.py&#xff1a; from selenium import webdriver from selenium.webdriver.common.by import Bydriver webdriver.Chrome() driver.get("https://www.selenium.dev/selenium/web/web-form.html") title driver.ti…

第七章 监听器

一、介绍 监听器的作用是被观察的对象发生某些情况时&#xff0c;自动触发代码的执行。监听器时GOF设计模式中&#xff0c;观察者模式的典型案例。观察者模式: 当被观察的对象发生某些改变时, 观察者自动采取对应的行动的一种设计模式。在JavaWeb中&#xff0c;可以使用监听器…

用终端请求接口

在终端&#xff08;命令行界面&#xff09;中请求接口&#xff0c;通常会使用curl命令&#xff0c;这是一个强大的命令行工具&#xff0c;用于传输数据。curl支持多种协议&#xff0c;包括HTTP、HTTPS、FTP等。下面是一些使用curl在终端中请求HTTP接口的基本示例。 1. 发送GET…

怎么让Nginx可以访问某一IP的每个后台controller接口

http { upstream backend { server 192.168.1.10; # 后端服务器IP } server { listen 80; location /controller1/ { ##proxy_pass http://localhost:801; proxy_pass http://backend/controller1/; # 后端controller1…

分布式事务学习笔记(四)微服务实现Stata AT模式、Stata Saga模式介绍

文章目录 前言4 Seata AT 模式4.1 实现原理4.2 脏写问题4.3 微服务实现AT模式4.3.1 新建数据库表4.3.2 修改配置文件4.3.3 重启服务并测试 5 Seata Saga 模式 前言 分布式事务学习笔记(一)分布式事务问题、CAP定理、BASE理论、Seata 分布式事务学习笔记(二)Seata架构、TC服务器…

Java 微服务框架 HP-SOA v1.1.4

HP-SOA 功能完备&#xff0c;简单易用&#xff0c;高度可扩展的Java微服务框架。 项目主页 : https://www.oschina.net/p/hp-soa下载地址 : https://github.com/ldcsaa/hp-soa开发文档 : https://gitee.com/ldcsaa/hp-soa/blob/master/README.mdQQ Group: 44636872, 66390394…

好用的工具网址

代码类&#xff1a; 1,json解析&#xff1a;JSON在线解析及格式化验证 - JSON.cn 2.传参转化编码 在线url网址编码、解码器-BeJSON.com 日常&#xff1a; 1.莆田医院查询&#xff1a;滚蛋吧&#xff01;莆田系