shell数组操作
一 连接多个数组为一个数组
用()将多个数组连接在一起,()中各个数组用空格隔开
("$[第一个数组名@]" "$[第二个数组名@]" "$[第三个数组名@]")
二 向数组中添加元素
("${原数组名[@]}" 新值1 新值2)
root@linx:~# l4=("${l4[@]}" "wo ni" ta)
三 从数组中切片出字符串
root@linx:~# l1=("a a" b c d e f)
root@linx:~# str1=${l1[@]} # 全部
root@linx:~# str2=${l1[@]:1:2} # 从索引1开始取两位
root@linx:~# str3=${l1[@]::2} # 从索引0开始取两位
root@linx:~#
root@linx:~#
root@linx:~# echo $str1
a a b c d e f
root@linx:~# echo $str2
b c
root@linx:~# echo $str3
a a b
四 从数组中切片出数组
切片开始的索引号:取几个
root@linx:~# l=("a a" b c d e f)
root@linx:~# l1=("${l1[@]}") # 全部
root@linx:~# l2=("${l1[@]:1:2}") # 从索引1开始取两位
root@linx:~# l3=("${l1[@]::2}") # 从索引0开始取两位
root@linx:~# l4=("${l1[@]:2}") # 从索引2开始取取到最后
五 将字符串转换成数组(以字符串中的空格来区分数组中的元素)
数组=($字符串变量名)
[root@DTOS ~]# str1="a b c"
[root@DTOS ~]# l1=($str1)
[root@DTOS ~]# for i in "${l1[@]}" ; do echo ==$i==; done
==a==
==b==
==c==
六 用read -a参数,从标准输入中读取数组
[root@DTOS ~]# read -a l1
a b
[root@DTOS ~]# for i in "${l1[@]}" ; do echo ==$i==; done
==a==
==b==
七 将数组中每个元素中的都去掉某个子字符串,然后转换成一个字符串
[root@DTOS ~]# names=(andy andy1 linda andy2)
[root@DTOS ~]# t=${names[@]/an/}
[root@DTOS ~]# for i in "${t[@]}" ; do echo ==$i==; done
==dy dy1 linda dy2==