【Shell语言学堂】数组练习题

1、使用数组和循环实现冒泡排序

#!/bin/bash
#定义一个数组arr
arr=(4 5 2 1 3 0)
#循环比较的轮数
for ((round=0;round<${#arr[*]}-1;round++))
do
	#每轮比较的次数为长度-1-轮数
	for ((count=0;count<${#arr[*]}-1-round;count++))
	do
		#比较前一个数和后一个数的大小
		if [ ${arr[count]} -gt ${arr[count+1]} ];then
			#交换两个数
			temp=${arr[count]}
			arr[count]=${arr[count+1]}
			arr[count+1]=$temp
		fi
	done
echo ${arr[*]}
done

在这里插入图片描述

2、将冒泡排序的代码重构为2个函数,2个关系是a函数调用b函数

vim mppx2.sh
#!/bin/bash
function pk {
  for ((count=0; count<${#arr[*]}-1-round; count++))
        do
            if [ ${arr[count]} -gt ${arr[count+1]} ];then
                temp=${arr[count]}
                arr[count]=${arr[count+1]}
                arr[count+1]=$temp
            fi
        done
}

function rou {
for ((round=0; round<${#arr[*]}-1; round++))
   do
	pk 
   done
   echo ${arr[*]}
}
arr=(5 2 8 1 9)
rou "${arr[@]}"

在这里插入图片描述

自定义数组参数:

#!/bin/bash
function pk {
  for ((count=0; count<${#arr[*]}-1-round; count++))
        do
            if [ ${arr[count]} -gt ${arr[count+1]} ];then
                temp=${arr[count]}
                arr[count]=${arr[count+1]}
                arr[count+1]=$temp
            fi
        done
}

function rou {
for ((round=0; round<${#arr[*]}-1; round++))
   do
        pk
   done
   echo ${arr[*]}
}

arr=($1)
rou "${arr[@]}"

在这里插入图片描述

3、声明一个存储的全整数数组,对其中的每一个值进行+10处理

#!/bin/bash
#定义一个数组
arr=(5 2 7 1 3)
#遍历数组中的每个数
 for ((count=0; count<${#arr[*]}; count++))
do
#将每个数加10
arr[count]=$(echo "${arr[count]}+10"|bc)
done
echo ${arr[*]}

在这里插入图片描述

4、对硬盘使用空间占比的排序

#!/bin/bash
#查看磁盘使用空间占比,并提取各个数据
mes=$( echo -n $(df -h|awk '{print $5}') )
shuzu=$(echo ${mes#*%}|tr -d '%')
arr=($shuzu)
function pk {
  for ((count=0; count<${#arr[*]}-1-round; count++))
        do
            if [ ${arr[count]} -gt ${arr[count+1]} ];then
                temp=${arr[count]}
                arr[count]=${arr[count+1]}
                arr[count+1]=$temp
            fi
        done
}

function rou {
for ((round=0; round<${#arr[*]}-1; round++))
   do
        pk
   done
   echo ${arr[*]}
}
rou "${arr[@]}"

在这里插入图片描述

5、对当前目录的文件大小进行排序

#!/bin/bash
#提取文件大小
fsz=$( echo -n $(ls -l|awk '{print $5}') )

arr=("$fsz")
function pk {
  for ((count=0; count<${#arr[*]}-1-round; count++))
        do
            if [ ${arr[count]} -gt ${arr[count+1]} ];then
                temp=${arr[count]}
                arr[count]=${arr[count+1]}
                arr[count+1]=$temp
            fi
        done
}

function rou {
for ((round=0; round<${#arr[*]}-1; round++))
   do
	pk 
   done
   echo ${arr[*]}
}
rou "${arr[@]}"

或者

bash mppx2.sh "$(echo -n $(ls -l|awk '{print $5}'))"

运行结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值