数组的概念
数组(Array)是有序的元素序列。若将有限个类型相同的变量的集合命名,那么这个名称为数组名。组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量。shell不限制数组的大小,理论上可以存放无限量的数据,shell数组元素的下标也是从0开始计数
定义数组的方法
方法一:
数组名=(value1 value2 value3 value4 ...)
方法二:
先定义列表,再引用列表的值定义数组。
列表名="value1 value2 value3 value4 "
数组名=($列表名)
方法三:
用过下标值定义每个元素。
数组名=([0]=value1 [1]=value2 [2]=value3 [3]=value4)
方法四:
通过下标值,一个一个定义数组内的每个元素。
数组名[0]=value1
数组名[1]=value2
数组名[2]=value3
引用数组的值
获取数组的数据列表(所有元素的值)
echo ${array[@]} 或 echo ${array[*]}
查看数组内某一个元素的值
${数组名[n]} //n代表元素的下标
echo ${array[0]} //获取数组内第一个元素的值(下标为0的元素值)
echo ${array[1]} //获取数组内第二个元素的值(下标为1的元素值)
获取数组的长度
echo ${#数组名[*]} 或 echo ${#数组名[@]}
数组分片(数组截取)
格式:
${数组名[@]:起始位置:截取长度} //起始位置从0算起
${数组名[@]} //获取整个数组的元素值
${数组名[@]:0:3} //从下标为0的元素开始截取,共截取3个元素。(即截取元素1到元素3)
${数组名[@]:2:2} //从下标为2的元素开始截取,共截取2个元素。(即截取元素3到元素4)
数组追加元素
方法一:
数组名[n]=元素值
方法二:
数组名[数组长度]=元素值
//此种方法必须保证数组元素是完整的,如果某个下标被跳过了,此种方法会替换掉原来的某个元素
方法三:
数组名=("${数组[@]}" 元素1 ... 元素n)
//引用数组值必须加双引号,不然原数组内有空格的单个元素(例如"zhang san")会被当成2个元素。
//且必须使用@,因为加上双引号之后"$@"表示将所有参数当作个体,而$*表示将所有参数当作一个整体。
1、引用数组的所有元素值一定要使用$@,因为加上双引号之后"$@"表示将所有参数当作个体
2、如果使用$*,那么数组内的所有元素会被当作一个整体,即被当成一个元素
方法四:
数组名+=(元素1 ... 元素n)
删除数组
删除数组内的某个元素
unset 数组名[n] //删除数组内的某一个元素,n为下标值
删除整个数组
unset 数组名[*] 或 unset 数组名[@]