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

运行结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值