shell数组的定义
1、数组中可以存在多个值。Bash Shell只支持一维数组(不支持多维数组)
2、数组元素的下标由0开始。
3、Shell数组用括号来表示,元素用“空格”符号分割开。
4、在shell语句中,使用、遍历数组的时候,数组格式要写成${arr[@]}或${arr[*]}
定义数组的方法
方法一:
数组名=(value0 value1 value2 ...)
以空格间隔,如果值为字符类型,需要加单引号或双引号
方法二:
数组名=([0]=value [1]=value [2]=value ...)
以空格间隔,“ [ ] ”里表示元素的下标,第一个元素从0开始
方法三:
列表名="value0 value1 value2 ..."
数组名=($列表名)
方法四:
数组名 [0]="value"
数组名 [1]="value"
数组名 [2]="value"
获取数组的所有元素的值
${数组名[*]}
${数组名[@]}
获取数组的长度
${#数组名[*]}
${#数组名[@]}
判断数组是否完整
${数组名[数组长度]}如果此值为空,则代表数组完整,因为最后一个元素的下标是 数组长度减一
获取数组的某一个元素的值
${数组名[n]} 代表元素的下标,范围为0~长度减一
数组分片 截取
${数组名[@]:起始位置:截取长度} 起始位置是从0算起的
数组字符替换
${数组名[@]/旧字符/新字符} 会替换所有元素上能匹配到的字符,但是这是临时替换不会影响原有数组,可通过重新赋值实现替换原有数组 数组名=(${数组名[@]}/旧字符/新字符)
删除数组
unset 数组名[n] 删除某一个元素
unset 数组名[n] / unset 数组名[n] 删除整个数组
追加数组
数组名+=(元素1 元素2 ...)
数组名=("${数组名[@]}"元素1 元素2 ...)
数组名[数组长度]=元素值
数组名[n]=值
如何向函数传参:
向函数传入数组的时候需要先把数组转换成列表作为函数参数使用 函数名 ${数组名1[@]}
在函数内把传入的列表重新组合成数组 数组名2=($@)
函数外重新组合成数组 数组名3=(`函数名 ${数组名1[@]}`)
冒泡排序