- 数组的定义和使用在上一篇博客中已经介绍过了,这篇博客主要是一些小案例,我一一列举出来给大家分享。
- 数组定义和简单使用的博客地址:shell脚本之函数和数组
一、数组的升序排序
用户随意输一个数组,不局限数组长度,输出结果将数组升序排序
#脚本内容:
#!/bin/bash
read -p "请输入你的数组长度:" num1 #先把用户输入的各个元素放入数组中
for i in `seq $num1`
do
read -p "请输入$i个数:" num2
array[$i-1]=$num2
done
echo ${array[*]}
#--------------------下面排序-------------------------------------------
for((m=0;m<${#array[*]}-1;m++))
do
for((n=0;n<${#array[*]}-1;n++))
do
if [[ ${array[n]} -gt ${array[n+1]} ]]
then
num=${array[n]} #num 作为一个中间存储量
array[n]=${array[n+1]}
array[n+1]=$num
fi
done
done
echo ${array[*]}
[root@node3 ~]# vim sort.sh
[root@node3 ~]# sh sort.sh
请输入你的数组长度:6
请输入1个数:45
请输入2个数:36
请输入3个数:75
请输入4个数:21
请输入5个数:43
请输入6个数:51
45 36 75 21 43 51
21 36 43 45 51 75
二、数组的降序排序
用户随意输一个数组,不局限数组长度,输出结果将数组降序排序
#脚本内容:
#!/bin/bash
read -p "请输入你的数组长度:" num1
for i in `seq $num1`
do
read -p "请输入$i个数:" num2
array[$i-1]=$num2
done
echo ${array[*]}
for((m=0;m<${#array[*]}-1;m++))
do
for((n=0;n<${#array[*]}-1;n++))
do
if [[ ${array[n]} -lt ${array[n+1]} ]]
then
num=${array[n]}
array[n]=${array[n+1]}
array[n+1]=$num
fi
done
done
echo ${array[*]}
[root@node3 ~]# sh sort.sh
请输入你的数组长度:6
请输入1个数:32
请输入2个数:63
请输入3个数:46
请输入4个数:75
请输入5个数:12
请输入6个数:33
32 63 46 75 12 33
75 63 46 33 32 12
三、数组的插入排序
用户想在一个数组中的某个元素后插入一个新的元素,最后进行排序
#!/bin/bash
read -p "请输入一个数组:"
read -a array
echo "数组:${array[*]}"
len=${#array[*]}
read -p "你想在第几个数后插入,插入的数为:" m shu
ary=(${array[*]:0:$m} $shu ${array[*]:$m:$[$len-$m]})
echo "插入后的数组:${ary[*]}"
for((i=0;i<${#ary[*]}-1;i++))
do
for((j=0;j<${#ary[*]}-1;j++))
do
if [[ ${ary[j]} -gt ${ary[j+1]} ]]
then
num=${ary[j]}
ary[j]=${ary[j+1]}
ary[j+1]=$num
fi
done
done
echo "升序排序:${ary[*]}"
[root@node3 ~]# sh sort.sh
请输入一个数组:6
42 32 69 87 21 30
数组:42 32 69 87 21 30
你想在第几个数后插入,插入的数为:2 10
插入后的数组:42 32 10 69 87 21 30
升序排序:10 21 30 32 42 69 87