25年2月27日

 1.分数等级

read b
case $b in
    100|9[0-9])
        echo "A" ;;
    7[0-9]|8[0-9])
        echo "B" ;;
    [1-6][0-9]|[0-9])
        echo "C" ;;
    *)
        echo "无效分数" ;;
esac

2.数位之和

#!/bin/bash             
read num
while [ $num -ne 0 ]
do 
    mod=$((num%10))
    sum=$((sum+mod))
    num=$((num/10))
done
echo sum=$sum
                        

3.

 #!/bin/bash           
 a=hello
 i=4
 while [ $i -ge 0 ]
 do
 b=${a:0-$i:1}
 echo -n $b
 ((i--))
 done
                       

4.查看文件

#!/bin/bash                         
num=0
numb=0
for var in "ls /home/ubuntu/*"
do
    if [ -d  "$var"  ]
    then 
        ((num++))

    elif [ -f "$var" ]
    then
        ((numb++))
    fi
done
echo num="目录$num个"
echo numb="普通文件$numb个"
                                    
                                    

5.金字塔

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

5.冒泡

#!/bin/bash                            
read -a a
len=${#a[@]}
for ((j=1;j<$len;j++))
do
for ((i=0;i<$len-j;i++))
do
    if [ ${a[$i]} -lt ${a[$i+1]} ]
    then
        temp=${a[$i]}
        a[$i]=${a[$i+1]}
       a[$i+1]=$temp
    fi

done
done
for ((i=0;i<$len;i++))
do
    echo a[$i]=${a[$i]}
done
                                       

6.插入排序

#!/bin/bash                           

read -a arr
len=${#arr[@]}
for ((i=1;i<len;i++))
do
    temp=${arr[$i]}
    for((j=i-1;j>=0;j--))
    do
        if [ $temp -lt ${arr[$j]} ]
        then
            arr[$j+1]=${arr[$j]}
        fi
    done
    arr[j+1]=$temp
done
for ((i=0;i<len;i++))
do
    echo arr[$i]=${arr[$i]}
done
                                      

7.

user="admin"
passwd="1234"
flag=0
money=10000
for ((i=0;i<3;i++))
do
    read -p "请输入用户名: " input_user
    read -s -p "请输入密码: " input_pass
    echo 
    if [ "$input_user" != "$user" ]
    then
        echo "没有该用户"
    elif [ "$input_user" = "$user" ]
    then
        if [ "$input_pass" !=  "$passwd" ]
        then
            echo "密码错误"
        elif [  "$input_pass" = "$passwd" ]
        then
            flag=1
            break
    fi
    if [ $i -eq 2 ]
    then
        echo "密码三次错误,请退出"
    else
        echo "您还有$((3-i-1))次机会"
    fi
    fi
done
if [ $flag -eq 1 ]
then
    echo "登陆成功!"
    select choice in "账户余额" "取款" "存款"
    do
        case $choice in
        "账户余额")
            echo "您账户余额为:$money¥";;
        "取款")
            while true;
            do
                read -p "请输入取款金额: " moneyout           
                if [ $moneyout -gt $money ];
                then
                    echo "账户余额不足,请重新输入取款金额"
                else
                        money=$((money - moneyout))
                        echo "取款成功,剩余余额: $money"
                        break
                    fi
                done;;
 
        "存款")
        read -p "请输入存款金额: " moneyin
        money=$((money + moneyin))
        echo "存款成功,当前余额: $money";;
    *)
        echo "输入无效";;
esac
 
    done
elif [ $flag -eq 0 ]
then
    echo "密码三次错误,请退出"
fi