首页 > 基础资料 博客日记

Linux bash 关联数组

2024-09-17 01:00:06基础资料围观134

这篇文章介绍了Linux bash 关联数组,分享给大家做个参考,收藏Java资料网收获更多编程知识


一. 关联数组定义

  • 从 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[@]}"; do
    echo "$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; do
    config["$key"]="$value"
done < my_conf.ini

# 遍历关联数组,打印配置文件的内容
for key in "${!config[@]}"; do
    echo "$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[@]}"; do
    echo "$key: ${sysinfo[$key]}"
done

# hostname: ubuntu
# kernel: 4.4.0-166-generic
# os: GNU/Linux

文章来源:https://blog.csdn.net/feyehong/article/details/142282707
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:jacktools123@163.com进行投诉反馈,一经查实,立即删除!

标签:

相关文章

本站推荐

标签云