数组是有序的元素序列 。若将有限个类型相同的变量的集合命名,那么这个名称为数组名。组成数组的各个变量称为数组的份量,也称为数组的元素,有时也称为下标变量。用于区分数组的各个元素的数字编号称为下标。数组是在程序设计中,为了处理方便, 把具备相同类型的若干元素按无序的形式组织起来的一种形式。这些无序排列的同类数据元素的集合称为数组。shell
在shell中数组有两种类型:数组
索引数组使用数字做为下标,下标默认从0开始。ide
root@iZuf6ilzd4iqvuj4dvuiwtZ:~# # 直接声明 root@iZuf6ilzd4iqvuj4dvuiwtZ:~# array=(10 20 30 40 50 60 60 80 90) # 用空格分隔 root@iZuf6ilzd4iqvuj4dvuiwtZ:~# # 使用declare root@iZuf6ilzd4iqvuj4dvuiwtZ:~# declare -a arrays # 声明一个索引数组
关联数组是一种具备特殊索引方式的数组。不只能够经过整数来索引它,还能够使用字符串或者其余类型的值(除了NULL)来索引它。ui
# 关联数组声明必须使用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循环能够遍历数组code
root@iZuf6ilzd4iqvuj4dvuiwtZ:~# for var in ${info[@]};do echo $var;done raojinlin 21 ops root@iZuf6ilzd4iqvuj4dvuiwtZ:~#