Shell的数组与字典(关联数组)使用详解

一、数组

 1.  数组的创建

      1)   arr=("value1" "value2" "value3")

      2)   ages=([3]=24 [5]=19 [10]=12)

第二种方式可以往指定下标赋值,与字典定义类似。注意,直接使用第二种方式,不能是字符串作为key,只能是数字

2.   数组的新增

      1)  ages+=43

数组的新增可以直接使用 ages+=43 的方式添加新元素43,其下标会自动填补最小下标

       2)  ages[2]=19

数组的新增可以指定下标添加元素,如果已有该下标,则覆盖

此外,数组元素的删除可以使用   unset ages[2]   的方式实现

 3.  数组的拼接

   arr_new=(${arr[*]}  ${ages[*]})  #新数组

 

二、字典/关联数组

1. 字典的创建 

shell脚本中定义字典必须事先声明变量,如你需要定义dic变量:declare -A dic。

个人觉得数组与字典(成系统的书本里称关联数组)差距不大,同样的遍历方式,但是如果不事先声明,那么遇到如下情况定义:

          arr["a"]=1

         arr["b"]=2

结果就是数组arr里面只有下标 为0 的值为2。

只有声明了之后,字符串下标才是有效的

  b is 2

  a is 1

2.  字典的定义

dic=([key1]="value1" [key2]="value2" [key3]="value3"),key可以是数字或字符串。

      也可以用      dic[key]=value      的方式定义或添加键值对,如果键值对已经存在,会覆盖之前的值。

三、调用

#打印指定下标的值

echo ${dic[key]}

#打印所有key,对数组来说就是下标 

echo ${!dic[*]}

#打印所有(key)下标

echo ${dic[*]}

四、遍历

字典和数组都可以这么用循环遍历,这里列举一种简单的

#遍历key值,数组的key就是下标

for key in $(echo ${!dic[*]})

  do

    echo "$key : ${dic[$key]}"

  done

echo "shell定义数组"

五、总结

数组与字典的获取方式是一致的,然字典是无序的,也就是说,遍历字典得到的顺序与存储进去的顺序不一致,而数组则是按照下标排序。单独按照存储的值排序需要自定义函数。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一勺米饭

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值