shell脚本数组
数组定义方法
- 方法一:
数组名=(value0 value1 value2 . . .)
- 方法二:
数组名=([0]=value [1]=value [2]=value . . .)
- 方法三:
列表名="value0 value1 value2 . . ."
数组名=($列表名)
- 方法四:
数组名[0]="value"
数组名[1]="value"
数组名[2]="value"
字符串 123456789
字符串列表 "10 20 30 40 50 60 70"
数组 (10 20 30 40 50 60 70) 每个元素的分隔符一定是空格
0 1 2 3 4 5 6
获取数组长度
echo ${#数组名[*]}
echo ${#数组名[@]}
[root@localhost ~/yy]# echo ${#ww[*]}
5
[root@localhost ~/yy]# echo ${#ww[@]}
5
获取数据列表
echo ${数组名[*]}
echo ${数组名[@]}
[root@localhost ~/yy]# echo ${ww[@]}
5 2 3 4 5
[root@localhost ~/yy]# echo ${ww[*]}
5 2 3 4 5
读取某下标赋值
echo ${数组名[N]} # N表示下标志
数组名: 5 2 3 4 5
下标志: 0 1 2 3 4
echo ${ww[2]}
3
数组遍历
数组切片
echo ${数组名 [@或]:起始位置:长度}*
echo ${ww[@]:0:2}
5 2
echo ${ww[*]:1:3}
2 3 4
数组替换
** 数组名=(${数组名[@或*]/查找字符/替换字符})**
数组删除
删除元素:
5 9 3 9 5
unset ww[2]
5 6 6 5
删除数组:
5 6 6 5
unset ww
数组追加元素
- 方法一:
数组名[下标数]=value
- 方法二:
数组名[${数组名[@]}]=value
- 方法三:
数组名=(“${数组名[@]}” value1 . . . valueN)
双引号不能省略,否则,当数组中存在包含空格的元素时会按空格将元素拆分成多个
不能将@替换为 * ,如果替换,不加双引号时与@的变现一致,加双引号时,会将数组中的所有元素作为一个元素添加到数组中
- 方法四:
数组名+=(value1 . . . valueN)
待添加元素必须用()包围起来,并且多个元素用空格分隔
向函数传数组参数
例题:将所有元素翻倍并输出