Linux shell 编程(五):数组

数组

数组是有序的元素序列 。若将有限个类型相同的变量的集合命名,那么这个名称为数组名。组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量。用于区分数组的各个元素的数字编号称为下标。数组是在程序设计中,为了处理方便, 把具有相同类型的若干元素按无序的形式组织起来的一种形式。这些无序排列的同类数据元素的集合称为数组。

在shell中数组有两种类型:

  • 索引数组(indexed arrays)
  • 关联数组(associative arrays)

索引数组(indexed arrays)

索引数组使用数字作为下标,下标默认从0开始。

  • 声明数组:
    root@iZuf6ilzd4iqvuj4dvuiwtZ:~# # 直接声明
    root@iZuf6ilzd4iqvuj4dvuiwtZ:~# array=(10 20 30 40 50 60 60 80 90) # 用空格分隔
    root@iZuf6ilzd4iqvuj4dvuiwtZ:~# # 使用declare
    root@iZuf6ilzd4iqvuj4dvuiwtZ:~# declare -a arrays # 声明一个索引数组

关联数组(associative arrays)

关联数组是一种具有特殊索引方式的数组。不仅可以通过整数来索引它,还可以使用字符串或者其他类型的值(除了NULL)来索引它。

  • 数组声明
# 关联数组声明必须使用declare -A 方式,否则shell会将其认为是索引数组
root@iZuf6ilzd4iqvuj4dvuiwtZ:~# declare -A info # 定义一个管理数组
root@iZuf6ilzd4iqvuj4dvuiwtZ:~# info['name']='raojinlin' # 插入name键,赋值
root@iZuf6ilzd4iqvuj4dvuiwtZ:~# info['age']=21
root@iZuf6ilzd4iqvuj4dvuiwtZ:~# info['obj']='ops'
root@iZuf6ilzd4iqvuj4dvuiwtZ:~# echo ${info[@]} # 获取数组
raojinlin 21 ops
root@iZuf6ilzd4iqvuj4dvuiwtZ:~# 

数组操作

  • 访问数组

    root@iZuf6ilzd4iqvuj4dvuiwtZ:~# echo ${array[0]} # array[index]
    10
    root@iZuf6ilzd4iqvuj4dvuiwtZ:~#  # 使用通配符* 或 @ 可以访问数组中的所有元素
    root@iZuf6ilzd4iqvuj4dvuiwtZ:~# echo ${array[@]}
    10 20 30 40 50 60 60 80 90
    root@iZuf6ilzd4iqvuj4dvuiwtZ:~# echo ${array[*]}
    10 20 30 40 50 60 60 80 90
    root@iZuf6ilzd4iqvuj4dvuiwtZ:~# array[0]=10 # 将下标为0的元素赋值为10
  • 数组长度
# 语法:${#数组[@|*]}
root@iZuf6ilzd4iqvuj4dvuiwtZ:~# echo ${#array[*]}
9
root@iZuf6ilzd4iqvuj4dvuiwtZ:~# 
  • 获取数组下标(键)
# 语法:${!数组[@|*]}
root@iZuf6ilzd4iqvuj4dvuiwtZ:~# echo ${!info[@]}
name age obj
root@iZuf6ilzd4iqvuj4dvuiwtZ:~# 
  • 数组遍历

使用for循环可以遍历数组

root@iZuf6ilzd4iqvuj4dvuiwtZ:~# for var in ${info[@]};do echo $var;done
raojinlin
21
ops
root@iZuf6ilzd4iqvuj4dvuiwtZ:~# 

转载于:https://blog.51cto.com/jlnetc/2106083

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值