当前位置: 首页 > article >正文

shell脚本的相关练习--->分支结构---->循环结构

一.使用case...in实现等级判断,输入成绩,判断等级

列如:90-100:A,70-89:B,0-69:C

#!/bin/bash
read -p"请输入成绩:" sorce
a=$((sorce/10))
case $a in
    9|10)
        echo A
        ;;
    7|8)
        echo B
        ;;
    0|1|2|3|4|5|6)          
        echo C
        ;;
esac
                            

二.完成任意输入一个数,使用while循环计算各个位数字之和

#!/bin/bash
  2 read -p"请输入一个数:" num
  3 while [ $num -ne 0 ]                                                                                                                                                                                   
  4 do
  5     a=$((num "%" 10))
  6     sum=$((sum "+" a))
  7     num=$((num "/" 10))
  8 done
  9 echo 各个数字之和为:$sum

运行结果为:

三.输入一个字符串,使用while循环实现字符串逆置

#!/bin/bash
read -p"请输入字符串:" str
len=${#str}
for((i=1;i<=len;i++))
do
    echo -n "${str:0-$i:1}" 
done
echo

运行结果:

四.循环家目录下的所有内容,计算家目录下 目录的个数,普通文件的个数,使用for循环

#!/bin/bash
 
arr=(`ls ~`)
len=${#arr[*]}
qt=0
for i in `seq 0 1 $(($len-1))`
do
	if [ -d ~/${arr[$i]} ]
	then
		((qt++))
	fi
done
echo 家目录下目录数量为$qt
qt=0
for i in `seq 0 1 $(($len-1))`
do
	if [ -f ~/${arr[$i]} ]
	then
		((qt++))
	fi
done
echo 家目录下普通文件数量为$qt

运行结果:

五.打印图形

   *

  ***

 *****

*******

#!/bin/bash
read -p"请输入打印层数:" num
for((i=1;i<=num;i++))
do
    j=$((num-i))
    for((l=0;l<j;l++))
    do
        echo -n " "
    done
    q=$((2*i-1))
    for((k=0;k<q;k++))        
    do
        echo -n "*"
    done
    echo
done

运行结果:

六.输入一个数组,请实现冒泡排序,插入排序

#!/bin/bash
read -p"请输入几组数据:" -a arr
#冒泡
for((i=1;i<${#arr[*]};i++))
do
    for((j=0;j<${#arr[*]}-i;j++))
    do
        if [ ${arr[$j]} -ge ${arr[$((j+1))]} ] 
        then
            t=${arr[$j]}
            arr[j]=${arr[$((j+1))]}
            arr[j+1]=$t
        fi
    done
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++))
do
        read -p"输入用户名:" admin
        read -p"输入密码:" passwd
    if [ $admin != "admin" ] || [ $passwd != "1234" ]
    then 
        echo 第$i次登录失败,还有$((3-i))次机会
    else
        select choice in 存款余额 取款 存款 
        do
            case $choice in                                       
            "存款余额")
                echo $money
                ;;
            "取款")
                read -p"请输入取款金额:" a
                if [ $a -gt $money ]
                then
                    echo 账户余额不足,请重新输入
                else
                    echo 提款成功,您的余额为:$((money-a))
                fi
                ;;
            "存款")
                read -p"请输入存款金额:" b
                echo 存款成功,您的余额为:$((b+money))
                ;;
            *)  
                echo error
                ;;
        esac    
    done
    fi
done

运行结果:


http://www.kler.cn/a/564443.html

相关文章:

  • yolo11 training benchmark [i7-13700 vs nvidia 3090]
  • Staruml软件的介绍安装uml类图的绘制流程
  • 第8章:流式海啸:数据重构
  • 8、HTTP/1.0和HTTP/1.1的区别【高频】
  • information_schema.processlist 表详解
  • Stale file handle
  • TCP 缓冲区核心机制
  • 为什么要进行软件测试?
  • 前端或者后端通常用到数组使用方式
  • 华为对流程认知的三个层次(重新认识流程)
  • 执行git操作时报错:`remote: [session-b8xxxda3] Access denied ...`解决方案
  • 深度分析:AheadComputing的RISC-V技术背景、战略定位与挑战
  • VScode在windows10上使用clang-format
  • 《Python实战进阶》专栏 No 5:GraphQL vs RESTful API 对比与实现
  • Spark基础篇-Application、Job、Stage 和 Task
  • StrokesPlus【电脑鼠标键盘手势软件】v0.5.8.0 中文绿色便携版
  • Scrapy:隧道代理中移除 Proxy-Authorization 的原理解析
  • 基于微信小程序的校园社团管理系统
  • 高效部署:Windows 系统下 Sentinel 安装与配置全攻略
  • matlab 七自由度车辆模型轮毂电机驱动电动汽车的振动分析