shell入门第三天

1使用case..in实现等级判断,

输入一个成绩,

判断等级
90-100A 70-89B0-69C

#!/bin/bash

# 提示用户输入成绩
echo "请输入成绩:"
read score

# 使用case...in语句判断成绩等级
case "$score" in
   [9][0-9] | 100)
        echo "等级:A"
        ;;
    [7-8][0-9])
        echo "等级:B"
        ;;
   [0-6][0-9])
        echo "等级:C"
        ;;
    *)
        echo "输入无效,请输入一个0-100之间的成绩。"
        ;;
esac

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

#!/bin/bash

# 提示用户输入一个数
echo "请输入一个数:"
read number

sum=0
temp=$number

# 使用while循环计算各个位数字之和
while [ $temp -ne 0 ]; do
    digit=$(( temp % 10 ))
    sum=$(( sum + digit ))
    temp=$(( temp / 10 ))
done

echo "各个位数字之和为:$sum"

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

#!/bin/bash

# 提示用户输入一个字符串
echo "请输入一个字符串:"
read str

reverse=""
length=${#str}
index=$(( length - 1 ))

# 使用while循环实现字符串逆置
while [ $index -ge 0 ]; do
    reverse="$reverse${str:$index:1}"
    index=$(( index - 1 ))
done

echo "逆置后的字符串为:$reverse"

4

#!/bin/bash

# 初始化计数器
a_count=0
file_count=0

# 遍历家目录下的所有内容
for item in ~/*; do
    if [ -d "$item" ]; then
        ((a_count++))
    elif [ -f "$item" ]; then
        ((file_count++))
    fi
done

# 输出结果
echo "家目录下的目录个数: $a_count"
echo "家目录下的普通文件个数: $file_count"

~                             

5打印图形

#!/bin/bash
for ((i=1;i<=4;i++))
do
        for ((j=1;j<=i;j++))
                do
                        echo -n "*"
done
        echo -e -n "\n"
done
~               

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

#!/bin/bash

# 定义一个数组
read -p "请输入一个数组" -a arr

# 获取数组长度
n=${#arr[@]}

# 冒泡排序算法
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[@]}"

#!/bin/bash

# 定义一个数组
read -p "请输入一个数组 " -a arr
# 获取数组长度
n=${#arr[@]}

# 插入排序算法
for ((i = 1; i < n; i++)); do
    key=${arr[i]}
    j=$((i - 1))
    
    # 将大于key的元素向后移动一位
    while [[ $j -ge 0 && ${arr[j]} -gt $key ]]; do
        arr[$((j + 1))]=${arr[j]}
        j=$((j - 1))
    done
    arr[$((j + 1))]=$key
done

# 输出排序后的数组
echo "插入排序后的数组: ${arr[@]}"

7.登录系统

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

#!/bin/bash

# 默认用户名和密码
USERNAME="admin"
PASSWORD="1234"
BALANCE=10000

# 登录函数
login() {
    local attempts=3
    while [ $attempts -gt 0 ]; do
        echo "请输入用户名:"
        read input_username
        echo "请输入密码(加密输入):"
        read -s input_password

        if [[ "$input_username" == "$USERNAME" && "$input_password" == "$PASSWORD" ]]; then
            echo "登录成功!"
            return 0
        else
            attempts=$((attempts - 1))
            if [ $attempts -eq 0 ]; then
                echo "第3次登录失败,账户被锁定"
                exit 1
            else
                echo "第$((4 - $attempts))次登录失败,还有$attempts次机会"
            fi
        fi
    done
}

# 显示菜单
show_menu() {
    echo "请选择操作:"
    echo "1. 查看账户余额"
    echo "2. 取款"
    echo "3. 存款"
    echo "4. 退出"
}

# 主程序
main() {
    login
    while true; do
        show_menu
        read choice
        case $choice in
            1)
                echo "当前余额:$BALANCE"
                ;;
            2)
                echo "请输入取款金额:"
                read amount
                if [ $amount -gt $BALANCE ]; then
                    echo "账户余额不足,请重新输入"
                else
                    BALANCE=$((BALANCE - amount))
                    echo "取款成功,剩余金额:$BALANCE"
                fi
                ;;
            3)
                echo "请输入存款金额:"
                read amount
                BALANCE=$((BALANCE + amount))
                echo "存款成功,余额的值:$BALANCE"
                ;;
            4)
                echo "退出系统"
                exit 0
                ;;
            *)
                echo "无效的选择,请重新输入"
                ;;
        esac
    done
}

# 运行主程序
main

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值