首页 > 基础资料 博客日记
Linux bash 关联数组
2024-09-17 01:00:06基础资料围观15次
这篇文章介绍了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进行投诉反馈,一经查实,立即删除!
标签:
相关文章
最新发布
- 高可用!一个基于 SpingBoot + Oauth2 的单点认证授权中心!
- java(1)数据类型,运算符,逻辑控制语句以及基本应用
- 学习平台|基于java的移动学习平台系统小程序(源码+数据库+文档)
- 【C++11】C++11新纪元:深入探索右值引用与移动语义
- JavaScript异步编程中的常见陷阱与解决方案
- java代码-编译-打包-执行_云原生时代笔记总结
- 一文搞定WeakHashMap
- CompletableFuture回调机制的设计与实现
- java_day2_常量,变量,数据类型,运算符
- java: JPS incremental annotation processing is disabled