shell数组
数组介绍:
数组就是相同数据类型的元素按一定顺序排列的集合。(类似python列表)
作用:缩短喝简化程序开发
小知识:(echo打印变量的个数和变量)
a=123456
echo ${#a}
6
echo ${a} || echo $a
123456
数组的定义和读取:
方法:
1.取数组的长度
array=(value1 value2 value3 value4)
array=(1 2 3 4 5 6)
echo ${#array[@]}
6
echo ${#array[*]}
6
第二种方法定义数组(key-value键值对)
array=([1]=one [2]=two [3]=three)
echo ${array[@]}
one two three
(非0开始打印)
[root@www 2017_08_31.sh]# echo ${array[1]}
one
[root@www 2017_08_31.sh]# echo ${array[3]}
three
[root@www 2017_08_31.sh]# echo ${array[2]}
two
第三种定义数组的方法
array[0]=a array[1]=b array[2]=c array[3]=d
echo ${array[@]}
a b c d
第四种定义数组的方法(最常用):将命令的执行结果赋值给数组
array=($(ls))
2.打印数组元素(shell元数是从第0个开始打印的)
echo ${array[0]}
1
[root@www 2017_08_31.sh]# echo ${array[1]}
2
[root@www 2017_08_31.sh]# echo ${array[2]}
3
类推......
echo ${array[6]} (没有打印空行)
将数组全部打印
echo ${array[@]}
1 2 3 4 5 6
echo ${array[*]}
1 2 3 4 5 6
3.数组赋值
数组的增加
echo ${#array[@]}
6
array[6]=7
echo ${array[@]}
1 2 3 4 5 6 7
echo ${#array[@]}
7
array[7]=7
echo ${array[@]}
1 2 3 4 5 6 7 7
数组替换
array[7]=8
echo ${array[@]}
1 2 3 4 5 6 7 8
array[0]=xiaochao
echo ${array[@]}
xiaochao 2 3 4 5 6 7 8
4.删除单个的元数:
unset array[0]
echo ${array[@]}
2 3 4 5 6 7 8
5.整个数组的删除
unset array
echo ${array[@]}
6.数组的字符串的截取和替换(支持变量的子串替换)
1)截取1号到3号数组元素,包括1和3
array=(1 2 3 4 5)
echo ${array[@]:1:3}
2 3 4
2)从3号元素开始截取2位
echo ${array[@]:3:2}
4 5
替换
3)将数组中的元素5替换为xyz(源数组未被修改)
echo ${array[@]/5/xyz}
4)改动数组将数组中的元素5修改为xyz并赋值给新数组
array1=(${array[@]/5/xyz})
echo ${array1[@]}
1 2 3 4 xyz
5)替换
从最左边替换
echo ${array[@]#1}
2 3 4 5
从最右边替换
echo ${array[@]%5}
1 2 3 4