Shell 数组 (图文并茂)

(一)数组的理念

数组是一种有序无序的集合,列表

(二)数组定义的方法

方法一:

  数组名=(value0  value1  value2 ...)

方法二:

 数组名=([0]=value  [1]=value  [2]=value ...)

方法三:

列表名="value0  value1  value2"
数组名=($列表名)

方法四:

数组名[0]="value"
数组名[1]="value" 
数组名[2]="value"

(三)获取数组的长度

number=(1 2 3 4 5)
#length=${#number[*]}
length=${#number[@]}


echo $length

在这里插入图片描述

(四)读取某下表的值

在这里插入图片描述

(五)数组遍历

#!/bin/bash
number=(1 2 3 4 5)
for i in ${number[@]}  
do
    echo $i
done

在这里插入图片描述

(六)数组的切片

arr=(12345)
echo ${arr[@] }  #输出整个数组
echo ${arr[@]:0:2} #获取${ 数组名[@或*] :起始位置:长度}的值
echo ${arr[@]:2:3}

在这里插入图片描述

(七)数组删除

arr=(1 2 3 4 5)
unset arr    #删除数组
echo ${arr[*]}


arr=(12345)
unset arr[2 ]   #删除第三个元素
echo ${arr[*] }

在这里插入图片描述

(八)数组追加元素

方法一:

array_name [index]=value

在这里插入图片描述

方法二:

array_name[${#array_name [@]}]=value

在这里插入图片描述

方法三:

array_name= ("$ {array_name[@]}" valuel ... valueN)
双引号不能省略,否则,当数组array_name中存在包含空格的元素时会按空格将元素拆分成多个

不能将“@”替换为“*”,如果替换为“*”,不加双引号时与“@"的表现一致,加双引号时,
会将数组array_name中的所有元素作为一个 元素添加到数组中.

在这里插入图片描述
在这里插入图片描述

方法四:

array_name+= (value1.. . valueN)
待添加元素必须用“()"包围起来,并且多个元索用空格分隔

在这里插入图片描述

(九)向函数传数组参数

在这里插入图片描述

(十)冒泡排序

在这里插入图片描述
在这里插入图片描述

(十一)直接选择排序

在这里插入图片描述

#!/bin/bash
array=(30 50 20 40 10)
length=${#array[*]}
for((i=1;i<$length;i++)){
    index=0
    for((j=1;j<=$length-i;j++)){
            if [ ${array[$j]} -gt ${array[$index]} ];then
                    index=$j
            fi
    }
    temp=${array[$length-$i]}
    array[$length-$i]=${array[$index]}
    array[$index]=$temp
} 
echo ${array[*]}                 

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_51622156/article/details/111591446