shell脚本的相关练习--->分支结构---->循环结构
一.使用case...in实现等级判断,输入成绩,判断等级
列如:90-100:A,70-89:B,0-69:C
#!/bin/bash
read -p"请输入成绩:" sorce
a=$((sorce/10))
case $a in9|10)echo A;;7|8)echo B;;0|1|2|3|4|5|6) echo C;;
esac
二.完成任意输入一个数,使用while循环计算各个位数字之和
#!/bin/bash2 read -p"请输入一个数:" num3 while [ $num -ne 0 ] 4 do5 a=$((num "%" 10))6 sum=$((sum "+" a))7 num=$((num "/" 10))8 done9 echo 各个数字之和为:$sum
运行结果为:
三.输入一个字符串,使用while循环实现字符串逆置
#!/bin/bash
read -p"请输入字符串:" str
len=${#str}
for((i=1;i<=len;i++))
doecho -n "${str:0-$i:1}"
done
echo
运行结果:
四.循环家目录下的所有内容,计算家目录下 目录的个数,普通文件的个数,使用for循环
#!/bin/basharr=(`ls ~`)
len=${#arr[*]}
qt=0
for i in `seq 0 1 $(($len-1))`
doif [ -d ~/${arr[$i]} ]then((qt++))fi
done
echo 家目录下目录数量为$qt
qt=0
for i in `seq 0 1 $(($len-1))`
doif [ -f ~/${arr[$i]} ]then((qt++))fi
done
echo 家目录下普通文件数量为$qt
运行结果:
五.打印图形
*
***
*****
*******
#!/bin/bash
read -p"请输入打印层数:" num
for((i=1;i<=num;i++))
doj=$((num-i))for((l=0;l<j;l++))doecho -n " "doneq=$((2*i-1))for((k=0;k<q;k++)) doecho -n "*"doneecho
done
运行结果:
六.输入一个数组,请实现冒泡排序,插入排序
#!/bin/bash
read -p"请输入几组数据:" -a arr
#冒泡
for((i=1;i<${#arr[*]};i++))
dofor((j=0;j<${#arr[*]}-i;j++))doif [ ${arr[j]} -ge ${#arr[j+1]} ] thent=${arr[j]}arr[j]=${arr[j+1]}arr[j+1]=$tfidone
done
echo ${arr[*]}
运行结果:
七.输入用户名和密码(加密输入),实现密码的三次登录 默认用户名admin 密码1234 账户存款10000
如果登录失败,则提示
第1次登录失败,还有2次机会
第2次登录失败,还有1次机会
第3次登录失败,账户被锁定
如果登录成功,则显示银行页面
1.账户余额
2.取款
3.存款
如果选择1,则打印当前的余额
如果选择2,则输入取款金额,如果取款金额大于实际金额,则提示账户余额不足,请重新输入,如果账户余额小于等于实际金额,则提示取款成功,打印剩余金额
如果选择3,则输入存款金额,并提示 存款成功,余额的值
#!/bin/bash
money=10000
for((i=1;i<=3;i++))
doread -p"输入用户名:" adminread -p"输入密码:" passwdif [ $admin != "admin" ] || [ $passwd != "1234" ]then echo 第$i次登录失败,还有$((3-i))次机会elseselect choice in 存款余额 取款 存款 docase $choice in "存款余额")echo $money;;"取款")read -p"请输入取款金额:" aif [ $a -gt $money ]thenecho 账户余额不足,请重新输入elseecho 提款成功,您的余额为:$((money-a))fi;;"存款")read -p"请输入存款金额:" becho 存款成功,您的余额为:$((b+money));;*) echo error;;esac donefi
done
运行结果: