SHELL脚本攻略(学习笔记)

时间:2023-02-12 15:40:16

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