实现SHELL中的列表和字典效果

很多情况下我们需要有种类型来存储数据,在python中有列表和字典,golang中有切片slice和map,那么在shell中,我们能否实现列表和字典呢,答案是肯定的,下面跟着博哥的示例来一步步掌握在shell中实现列表和字典的方法吧。

复制代码
-------------
SHELL数组(实现列表)
-------------
# family=(aaa bbb ccc)    <--- 定义数组
# echo ${#family[*]}     <--- 取数组里变量长度
3
# echo ${family[0]}     <--- 取数组第一个变量
aaa
# echo ${family[1]}     <--- 取数组第二个变量
bbb
# echo ${family[2]}     <--- 取数组第三个变量
ccc
# echo ${family[*]}     <--- 取数组里所有变量
aaa bbb ccc
# echo ${family[*]:2}     <--- 去掉数组里的前两个值,保持取最后一个值
ccc

脚本示例:
# vim test.sh
#!/bin/bash
family=(     # or 也可以这样定义  family=(aaa bbb ccc)
aaa 
bbb 
ccc
)

for name in ${family[*]}   #第一种方法,常规for循环取值的方式
do
echo $name
done
echo "================="
for ((name=0;name<${#family[*]};name++))   #第二种方法
do
echo ${family[name]}
done

执行结果:
[root@nfs-server scripts]# bash test.sh 
aaa
bbb
ccc
=================
aaa
bbb
ccc




实现"字典":

my_config=(
  shanghai+http://10.0.1.201+boge+devops1
  beijing+http://10.0.1.202+boge+devops2
  hongkong+http://10.0.1.203+boge+devops3
)


for r in `echo ${regions}`
do
  export MY_REGION=`echo ${my_config[@]}|tr " " "\n"|grep -w $r|awk -F+ '{print $1}'`
  export MY_URL=`echo ${my_config[@]}|tr " " "\n"|grep -w $r|awk -F+ '{print $2}'`
  export MY_USERNAME=`echo ${my_config[@]}|tr " " "\n"|grep -w $r|awk -F+ '{print $3}'`
  export MY_PASSWORD=`echo ${my_config[@]}|tr " " "\n"|grep -w $r|awk -F+ '{print $4}'`

  echo "====== $r START  ======"
  echo $MY_URL
  echo $MY_USERNAME
  echo $MY_PASSWORD
  echo $MY_REGION
  echo "====== $r END  ======"
done


# 另外一种实现字典的形式
#!/bin/bash


test='
{
  "aaa": 1,
  "bbb": 2,
  "ccc": 3
}
'

echo $test|jq -r ".aaa"
相关推荐
wewowilling2 小时前
认识微服务
java·运维·微服务·springcloud
玖石书3 小时前
Ubuntu 24.04 UFW 全命令攻略:从入门到端口开放实战
linux·运维·ubuntu
weifont4 小时前
自动化抓取和上架商品:能不动手,就少动手
运维·前端·自动化
拂拉氏5 小时前
【知识讲解】 Linux之动静态库的了解
linux·运维·服务器·动静态库
Mikko75 小时前
Linux 重启后日志没了?进程被 OOM 杀了去哪看?logrotate 之后日志还往旧文件写?三台真机实测日志与性能排查
linux·运维·centos
光依旧6 小时前
发版就掉请求?Spring Boot优雅停机的四步
运维·spring boot·nginx·高可用·优雅停机·mcp server
yichengerp7 小时前
电子行业常用erp系统有哪些?推荐适合中小电子厂的易呈erp软件,操作简单,易落地
大数据·运维·人工智能·云计算·制造
天国梦7 小时前
国密门禁品牌怎么选?2026年最新3个避坑要点
运维·服务器·数据库·python
信可维8 小时前
自动化操作多平台账号:登录态、双会话与 User Data 的 3 个坑
运维·自动化
龙仔7258 小时前
RustDesk 自建服务器 Key 强校验配置笔记
运维·服务器·笔记