【博学谷学习记录】超强总结,用心分享|Shell的数组与Map


数组用括号 ()表示,元素之间使用空格分隔

shell只支持一维数组

#方式一
array_name=(item1 item2 ...)
arr1=( 29 100 13 8 91 44 )

#方式二
array_name=([索引下标1]=item1 [索引下标2]=item2 ...)
arr2=( [0]=1 [2]=100 [4]=aa )

# 数组元素可以不相同
arr=(20 56 "http://www.baidu.com/")

# 是动态的数组,定义后还可以赋值
arr[6]=58

# 由于上面只赋值了4个元素, 所以数组的长度是4
[root@node2 ~] echo ${#arr[*]}
4

Shell的Map(关联数组)

使用关键字declare -A定义key-value关联数组 arr=([key]=value [key1]=value1 ...])

# 定义关联数组
[root@node2 ~] declare -A arr5=([name]="baidu" [age]=20 ["sex"]=women)

# 根据key获取value
[root@node2 ~] echo ${arr5[age]}
20

# 定义成关联数组后无法使用索引获取
[root@node2 ~] echo ${arr5[1]}

[root@node2 ~]

语法

  1. 通过下标获取元素,index从0开始 ${arr[index]}

需要使用变量符号${}

[root@node2 ~] arr=(20 56 "http://www.baidu.com/")

[root@node2 ~] echo ${arr[1]}
56

# 不加索引默认显示第0个元素
[root@node2 ~] echo ${arr}
20

  1. 获取值并赋值给其它变量 item=${arr[index]}
[root@node2 ~] item=${arr[1]}

[root@node2 ~] echo $item
56
  1. 获取所有元素${arr[@]}或者${arr[*]}
[root@node2 ~] echo ${arr[*]}
20 56 http://www.baidu.com/ 58

[root@node2 ~] echo ${arr[@]}
20 56 http://www.baidu.com/ 58

  1. 获取数组长度${#arr[@]}或者${#arr[*]}
[root@node2 ~] echo ${#arr[*]}
4

[root@node2 ~] echo ${#arr[@]}
4

  1. 获取数组指定元素的长度${#arr[索引]}
[root@node2 ~] echo ${#arr[2]}
21

# 不加索引默认计算第0个元素长度
[root@node2 ~] echo ${#arr}
2

数组合并

相当于使用()重新定义一个数组array_new=(${array1[*]} ${array2[@]} ...)

# 定义数组
[root@node2 ~] echo ${arr[@]}
20 56 http://www.baidu.com/ 58
[root@node2 ~] arr2=(1 2 3)

# 合并两个数组的所有元素
[root@node2 ~] arr3=(${arr[*]} ${arr2[@]})
[root@node2 ~] echo ${arr3[@]}
20 56 http://www.baidu.com/ 58 1 2 3

# 合并一个数组所有元素及另一个数组的指定元素
[root@node2 ~] arr4=(${arr[*]} ${arr2[0]})
[root@node2 ~] echo ${arr4[@]}
20 56 http://www.baidu.com/ 58 1

# 合并一个数组所有元素及自定义元素
[root@node2 ~] arr5=(${arr[*]} 66)
[root@node2 ~] echo ${arr5[@]}
20 56 http://www.baidu.com/ 58 66

数组删除

删除数组与删除变量的语法相同unset array_name[index]unset array_name

# 数组5
[root@node2 ~] echo ${arr5[@]}
20 56 http://www.baidu.com/ 58 66

# 删除数组第0个元素
[root@node2 ~] unset arr5[0]
[root@node2 ~] echo ${arr5[@]}
56 http://www.baidu.com/ 58 66

# 删除整个数组
[root@node2 ~] unset arr5
[root@node2 ~] echo ${arr5[@]}

[root@node2 ~]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值