shell编程之数组

75 阅读1分钟

什么是数组

一次性定义多个变量

数组(Array)是有序的元素序列。若将有限个类型相同的变量的集合命名,那么这个名称为数组名。

组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量。

用于区分数组的各个元素的数字编号称为下标。元素的下标从0开始。

定义数组

数组用括号来表示,元素用"空格"符号分隔开。

数组名=(value1 value2 value3 value4 ...)

用过下标值定义每个元素。

数组名=([0]=value1 [1]=value2 [2]=value3)

先定义列表,再引用列表的值定义数组。

列表名="value1 value2 value3 value4 value5"  数组名=($列表名)

引用数组的值

获取数组的数据列表

echo ${array[@]}  或  echo ${array[*]}

image.png

获取数组的长度

echo ${#数组名[*]}  
echo ${#数组名[@]}

image.png 查看数组内最后一个元素的值

echo ${array[-1]}   //获取最后一个元素的值  
echo ${array[-2]}   //获取倒数第二个元素的值

image.png

数组的常用操作

 数组分片

${数组名[@]:起始位置:截取长度}       //起始位置从0算起  
${数组名[@]}         //获取整个数组的元素值  
${数组名[@]:0:3}     //从下标为0的元素开始截取,共截取3个元素。(即截取元素1到元素3)  
${数组名[@]:2:2}     //从下标为2的元素开始截取,共截取2个元素。(即截取元素3到元素4)

image.png

数组元素替换

临时替换(不会影响原有数组)

echo ${数组名[@]/旧字符/新字符}

image.png 永久替换

数组名=(${数组名[@]/旧字符/新字符})

image.png

删除数组

删除数组内的某个元素

unset 数组名[n]   //删除数组内的某一个元素,n为下标值

image.png 删除整个数组

unset 数组名[*]  或  unset 数组名[@]

image.png

数组扩写,增加数组内的元素

数组名[n]=元素值

image.png

数组名+=(元素值)

image.png

使用for遍历输出数组的每个元素值

image.png