目录
什么是数组?
- 字符串:"abcdef"
- 字符串列表:"a" "b" "c" "d" "f"
- 数组:("a" "b" "c" "d" "f") 下标:0 1 2 3 4
- 由多个元素组成,用空格隔开
- 数组可包含的数据类型:数值 或 “字符串” ‘字符串’
定义数组
方法一
数组名=(value0 value1 value2 ...)
方法二
数组名=([0]=value [1]=value [2]=value ...)
方法三
列表名="value0 value1 value2 ..."
数组名=($列表名)
方法四
数组名[0]="value"
数组名[1]="value"
数组名[2]="value"
查看数组
查看数组的元素列表
echo ${数组名[@]}
echo ${数组名[*]}
查看数组的长度(元素的个数)
echo ${#数组名[@]}
echo ${#数组名[*]}
查看数组的元素下标
echo ${!数组名[@]}
echo ${!数组名[*]}
查看某个下标的元素值
echo ${数组名[下标]}
数组分片
echo ${数组名[@]:下标:长度}
echo ${数组名[*]:下标:长度}
数组字符替换
echo ${数组名[@]/旧字符/新字符}
数组名=(${数组名[*]/旧字符/新字符}) #通过重新定义的方式实现永久替换
数组删除
unset 数组名[下标] #删除数组的某个下标
unset 数组名 #删除数组
数组遍历和重新定义
arr=(1 2 3 4 5)
n=0
for i in ${arr[@]}
do
arr[$n]=$[i*2]
let n++
done
数组追加元素
数组名[新下标]=新元素
数组名[数组长度]=新元素 #仅适用于完整的数组
数组名+=(新元素1 新元素2 ....)
数组名=("${数组名[@]}" 新元素1 新元素2 ....)
函数与数组
向函数传数组参数
函数名() {
数组2=($@) #在函数体内将传入的列表重新组成数组
....
}函数名 ${数组1[@]} #在函数体外将数组分解成列表传入
从函数返回数组
函数名(){
....
echo ${数组2[@]} #在函数体内以列表形式返回值
}数组1=(函数名 参数) #在函数体外将函数执行的结果重新组合成数组