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

shell脚本编程练习

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

90-100A 70-89B 0-69C

#!/bin/bash
read -p "请输入学生成绩:" a
case $a in
	9[0-9])
	echo 等级为A
	;;
	[7-8][0-9])
		echo 等级为B
		;;
	[0-6][0-9])
		echo 等级为C
		;;
esac

运行结果: 

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

1234---->10

#!/bin/bash
read -p "请输入一个数:" a
while [ $((a%10)) -ne 0 ]
do
	((sum+=a%10))
	a=$((a/10))
done
echo 各位和为$sum

运行结果:

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

hello---->olleh

#!/bin/bash
read -p "请输入字符串:" a
str=$a
len=${#str}
i=0
b=
while [ $i -le $len ]
do 
	((i++))
	b=$b${str:0-i:1}
done
echo $b

运行结果:

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

#!/bin/bash
a=0
b=0
for item in ~/*
do
	if [ -d "$item" ]
	then
		((a++))
	elif [ -f "$item" ]
	then 
		((b++))
	fi
done
	echo 目录个数为:$a
	echo 普通文件个数为:$b

运行结果:

5.打印图形
   *
  ***
 *****
*******

#!/bin/bash
for((i=1;i<4;i++))
do
	for((j=0;j<=4-i;j++))
	do
		echo -n " "
	done
	for((k=0;k<2*i-1;k++))
	do
		echo -n "*"
	done
	echo
done

运行结果:

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

#!/bin/bash
read -p "请输入一个数组:" -a arr
n=${#arr[@]}

temp=0
for((i=0;i<n-1;i++))
do
	for((j=0;j<n-i-1;j++))
	do
		if [ ${arr[j]} -gt ${arr[j+1]} ]
		then
			temp=${arr[j]}
			arr[j]=${arr[j+1]}
			arr[j+1]=$temp
		fi
	done
done
echo "冒泡排序结果: ${arr[@]}"



read -p "请输入一个数组:" -a arr1
insert_arr=("${arr1[@]}")
n=${#insert_arr[@]}
for ((i=1; i<n; i++)) 
do
    key=${insert_arr[i]}
    j=$((i-1))
    while ((j >= 0 && insert_arr[j] > key))
do
        insert_arr[j+1]=${insert_arr[j]}
        ((j--))
    done
    insert_arr[j+1]=$key
done
echo "插入排序结果: ${insert_arr[@]}"

运行结果:

7.输入用户名和密码(加密输入),实现密码的三次登录   默认用户名admin 密码1234  账户存款10000
如果登录失败,则提示
第1次登录失败,还有2次机会
第2次登录失败,还有1次机会
第3次登录失败,账户被锁定
如果登录成功,则显示银行页面
1.账户余额
2.取款
3.存款
如果选择1,则打印当前的余额
如果选择2,则输入取款金额,如果取款金额大于实际金额,则提示账户余额不足,请重新输入,如果账户余额小于等于实际金额,则提示取款成功,打印剩余金额
如果选择3,则输入存款金额,并提示 存款成功,余额的值

#!/bin/bash
set_user=admin
set_password=1234
balance=10000
for((i=1;i<=3;i++))
do
	read -p "请输入用户名:" username
	read -p "请输入密码:" password
	echo
if [ "$username" == "$set_user" ] && [ "$password" == "$set_password" ]

then
	echo 登陆成功
	break
else
	if	[ $i -eq 3 ]
	then
		echo 账户被锁定
	else 
	echo 第$i次登录失败,还有$((3-i))次机会

fi
fi
done

while true; do
    echo -e "\n======================="
    echo "1. 账户余额"
    echo "2. 取款"
    echo "3. 存款"
    echo "======================="
    read -p "请选择操作: " choice

    case $choice in
        1)
            echo "当前余额: ${balance}元"
            ;;
        2)
            while true; do
                read -p "请输入取款金额: " amount
                # 验证数字格式且大于0
                if [[ ! $amount =~ ^[0-9]+$ || $amount -le 0 ]]; then
                    echo "输入错误:必须为正整数"
                elif (( amount > balance )); then
                    echo "余额不足,当前余额: ${balance}元"
                else
                    (( balance -= amount ))
                    echo "取款成功!剩余金额: ${balance}元"
                    break
                fi
            done
            ;;
        3)
            while true; do
                read -p "请输入存款金额: " amount
                # 验证数字格式且大于0
                if [[ ! $amount =~ ^[0-9]+$ || $amount -le 0 ]]; then
                    echo "输入错误:必须为正整数"
                else
                    (( balance += amount ))
                    echo "存款成功!当前余额: ${balance}元"
                    break
                fi
            done
            ;;
        *)
            echo "无效选项,请重新输入"
            ;;
    esac
done

运行结果:

相关文章:

  • 基于python~疫情数据可视化分析系统~源码
  • CogCreateGraphicLabelTool工具
  • 现存脑容知识库
  • 各种类型网络安全竞赛有哪些 网络安全大赛的简称
  • 【地图视界-Leaflet1】快速搭建你的第一个地图
  • Linux驱动开发实战(一):LED控制驱动详解
  • Matlab地图绘制教程第1期—海岸线图
  • vue3.2 + vxe-table4.x 实现多层级结构的 合并、 展开、收起 功能
  • Three.js 与 Cesium.js 的开源:three-cesium-examples
  • 协议-CoAP
  • DeepSeek-OpenSourceWeek-第三天-Release of DeepGEMM
  • 《deepseek FlashMLA :高效的 MLA 解码内核》:此文为AI自动翻译
  • Mac本地部署Deep Seek R1
  • Mybatis面试总结(下):xml文件和mybatis内部结构的映射关系是?为什么说MyBatis是半自动ORM?它与全自动的区别是?
  • JVM线程分析详解
  • C高级——shell(3)
  • Professional Pycharm教程
  • Jmeter基础知识总结
  • [笔记.AI]AI知识科普提纲
  • 《昇思25天学习打卡营第14天|计算机视觉-ShuffleNet图像分类》
  • 北外滩集团21.6亿元摘上海虹口地块,为《酱园弄》取景地
  • 上海交大:关注到对教师邵某的网络举报,已成立专班开展调查
  • 巴基斯坦称约50名印度士兵在克什米尔实控线丧生
  • 叙利亚政权领导人首访西方国家,与法国总统讨论叙局势
  • 售卖自制外挂交易额超百万元,一男子因提供入侵计算机系统程序被抓
  • 十四届全国政协原常委、民族和宗教委员会原副主任苟仲文被提起公诉