首页 > 基础资料 博客日记
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进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:jacktools123@163.com进行投诉反馈,一经查实,立即删除!
标签: