bash里有两种数组:普通数组和关联数组。普通数组只能使用整型数值作为数组索引,关联数组可以使用字符串作为索引。
1.7.1 普通数组
定义数组的方式一:
[root@xuexi tmp]# array_test=(1 2 3 4)
它们分别存储在索引位0-3的位置上,是array_test[0]到array_test[3]对应的值。
[root@xuexi tmp]# echo ${array_test[2]} ç数组的引用方式:${array_name[index]}
3
注意数组中定义是使用空格作为分隔符定义在括号内,而不是逗号。如果使用逗号,则它们将作为一个整体,也就是数组索引0的值。
如果使用逗号,则:
[root@xuexi tmp]# array_test=(1,2,3,4)
[root@xuexi tmp]# echo ${array_test[0]} ç整体结果作为索引0位的值。
1,2,3,4
定义数组的方式二:可以自定义索引位。
[root@xuexi tmp]# array_test[1]=1
[root@xuexi tmp]# array_test[2]=2
[root@xuexi tmp]# array_test[3]=3
[root@xuexi tmp]# array_test[4]=4
[root@xuexi tmp]# echo ${array_test[*]}
1,2,3,4 1 2 3 4
打印数组所有值。
[root@xuexi tmp]# echo ${array_test[*]}
1,2,3,4 1 2 3 4
或者:
[root@xuexi tmp]# echo ${array_test[@]}
1,2,3,4 1 2 3 4
查看数组索引号。
[root@xuexi tmp]# echo ${!array_test[*]}
0 1 2 3 4
或者
[root@xuexi tmp]# echo ${!array_test[@]}
0 1 2 3 4
1.7.2 统计数组长度
[root@xuexi tmp]# echo ${#array_test[*]}
5
[root@xuexi tmp]# echo ${#array_test[@]}
5
1.7.3 关联数组
关联数组支持字符串作为数组索引。使用关联数组必须先使用declare -A声明它。
[root@xuexi tmp]# declare -A array_dep ç声明之后就可以给其赋值了
[root@xuexi tmp]# array_dep=([name1]=longshuai [name2]=xiaofang)
[root@xuexi tmp]# echo ${array_dep[name1]}
longshuai
也可以分开赋值。
[root@xuexi tmp]# array_dep[name3]=zhangsan
[root@xuexi tmp]# array_dep[name4]=lisi
[root@xuexi tmp]# echo ${array_dep[name4]}
lisi
查看数组所有值。
[root@xuexi tmp]# echo ${array_dep[*]}
zhangsan xiaofang longshuai lisi ç可以看到是字母倒序排列的
或者:
[root@xuexi tmp]# echo ${array_dep[@]}
zhangsan xiaofang longshuai lisi ç可以看到是字母倒序排列的
查看数组索引号。
[root@xuexi tmp]# echo ${!array_dep[@]} ç对应字母倒序排列
name3 name2 name1 name4
或者:
[root@xuexi tmp]# echo ${!array_dep[*]}
name3 name2 name1 name4
统计数组长度。
[root@xuexi tmp]# echo ${#array_dep[*]}
4
或者:
[root@xuexi tmp]# echo ${#array_dep[@]}
4