shell 编程教程(4)给力的数组

数组是 shell 中比较特殊的数据类型,它是一组数据的集合。

1. 定义格式

索引数组:

array_name=(value0 value1 value2 ...)

array_name[0]=value0 array_name[1]=value1 array_name[2]=value2 ...

关联数组:

declare -A array_name array_name[key1]=value1 array_name[key2]=value2 ...

declare -A array_name array_name=([key1]=value1 [key2]=value2 ...)

举栗子:

# 索引数组
[root@server ~]# students=(Adam Bob Chris David)
[root@server ~]# echo ${students[0]}
Adam
[root@server ~]# echo ${students[1]}
Bob
[root@server ~]# echo ${students[2]}
Chris
[root@server ~]# echo ${students[3]}
David
# 关联数组
[root@server ~]# declare -A age
[root@server ~]# age=([Adam]=18 [Bob]=19 [Chris]=18 [David]=20)
[root@server ~]# echo ${age[Adam]}
18
[root@server ~]# echo ${age[Bob]}
19
[root@server ~]# echo ${age[Chris]}
18
[root@server ~]# echo ${age[David]}
20

2. 数组操作

在索引数组中,使用 ${array_name[key]} 可以取到对应 key 的值,key可以是0,1,2...等等的正整数,表示从0开始的第 key 个数组元素的值,当 key 取负整数时,表示倒数第 key 个元素,比如${array_name[-1]} 表示最后一个元素的值。还有一些实用的操作,在下边展示:

[root@server ~]# echo ${students[-1]}
David
[root@server ~]# echo ${students[-2]}
Chris
# 打印数组所有元素,每个元素独立存在
[root@server ~]# echo ${students[@]}
Adam Bob Chris David
# 打印数组所有元素,作为一个整体
[root@server ~]# echo ${students[*]}
Adam Bob Chris David
# 打印数组元素个数
[root@server ~]# echo ${#students}
4
[root@server ~]# echo ${#students[*]}
4
[root@server ~]# echo ${#students[@]}
4
# 打印数组所有索引,每个索引独立存在
[root@server ~]# echo ${!students[@]}
0 1 2 3
# 打印数组所有索引,作为一个整体
[root@server ~]# echo ${!students[*]}
0 1 2 3

# 不存在的索引,返回空
[root@server ~]# echo ${students[5]}
[root@server ~]#

在关联数组中,操作类似:

# 打印所有元素,因为没有索引,所以打印出来也是无序的
[root@server ~]# echo ${age[@]}
19 20 18 18
[root@server ~]# echo ${age[*]}
19 20 18 18
# 打印所有key,也是无序的
[root@server ~]# echo ${!age[*]}
Bob David Chris Adam
[root@server ~]# echo ${!age[@]}
Bob David Chris Adam
# 打印元素个数
[root@server ~]# echo ${#age[@]}
4
[root@server ~]# echo ${#age[*]}
4
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值