在shell脚本中,我们用变量存储一个值,那么多个值该怎么存储呢?我们可以使用数组,存储多个数值#
一.数组的概述
1.1数组的定义
基本格式:数组名=(value1 value2 … valuen)
数组中可以存放多个值。Bash Shell 只支持一堆基数(不支持多维数组)
Shell 数组用括号来表示,元素用"空格"符号分割开
数组元素的下标由0开始
数组: a=(1 2 3 4 5)
下标: 0 1 2 3 4
在shell语句中,使用、遍历数组的时候,数组格式要写成 ${arr[@]} 或 ${arr[*]}
1.2定义数组
定义数组的方法一般有三种:
方法一:
数组名=(value1 value2 … valuen)
方法二:
数组名=([0]=value0 [1]=value0 [2]=value0 …)
方法三:
数组名[0]=“value”
数组名[1]=“value”
数组名[2]=“value”
1.3数组长度
一个数组有若干个数据,那么我们如何获得数组的长度呢?
我们可以使用”$#“获取一个数组的长度
${#数组名[*或@]}
二.数组的使用
2.1数组追加元素
在定义了一个数组之后,如何向其中添加新的元素呢?
我们可以使用定义数组时使用的,用下标进行新的元素追加
格式:数组名[下标]=变量
那么进行多个元素追加,这样使用下标就过于繁琐
数组名+=(value1 value2 ... valuen)
2.2数组元素替换
对数组中的某个元素进行更改
格式:数组名=(${数组名[*]/被换元素/替换元素}) #注意小括号()
2.3数组元素删除
对数组或数组元素删除时,可以使用unset
格式:
unset 数组名 #删除整个数组
或
unset 数组名[下标] #删除对应下标元素
2.4数组切片
对数组的调用,我们可以打印整个数组或某个下标对应的元素,若取数组中的某个段该怎么使用呢?${数组名[*]:下标:个数}
例如:${a[*]:1:4} #取出数组a下标1及其后的4为元素
冒泡排序,对数组中的数值按大小进行排序
四.总结
1.在使用数组的时候,一定要注意数组的下标是从0开始
2.数组元素替换时。格式为:数组名=(${数组名[*]/被换元素/替换元素})、要注意外面有个小括号