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

原文地址:https://www.cnblogs.com/xiaoyongzhuo/p/7459600.html