计算两数值之间的和-第二版

本文共有3261个字,关键词:
#!/bin/bash
#Version:0.3.1
#Author:stone
#Discription:get sum.
a=1                                          #给变量赋初始值,用于case选择

function cho()                               #用于选择返回的输入值的位置
{
while :; do
    case $1 in
    2)
        echo -e "\033[32m1-返回最小值输入.\033[0m"
        echo -e "\033[32m2-返回最大值输入.\033[0m"    
        echo -e "\033[32m直接回车返回当前默认层.\033[0m"        
        echo -n -e "\033[31m请输入返回哪一个层级:\033[0m"
        read n                               #从键盘获取一个返回层级值
        if [ ! -z $n ]; then
            n1=$(echo $n |sed 's/[0-9]//g')
            if [ -z $n1 ]; then
                if [ $n -le 2 -a $n -ge 1 ]; then
                    a=$n
                    continue 2
                else
                    echo -e "\033[31m请输入1或者2!\033[0m"
                fi
            else
                echo -e "\033[31m输入不是纯数字!\033[0m"                
            fi
        else
            a=$a
            continue 2
        fi
        ;;
    3)
        echo -e "\033[32m1-返回最小值输入.\033[0m"
        echo -e "\033[32m2-返回最大值输入.\033[0m"    
        echo -e "\033[32m3-返回增量值输入.\033[0m"            
        echo -n -e "\033[31m请输入返回哪一个层级:\033[0m"
        read n                                         #从键盘获取一个返回层级值
        if [ ! -z $n ]; then                           #对获取的值进行判断
            n1=$(echo $n |sed 's/[0-9]//g')
            if [ -z $n1 ]; then
                if [ $n -le 3 -a $n -ge 1 ]; then
                    a=$n
                    continue 2
                else
                    echo -e "\033[31m请输入1或者2或者3!\033[0m"
                fi
            else
                echo -e "\033[31m输入不是纯数字!\033[0m"                
            fi
        else
            a=$a
            continue 2
        fi
        ;;
    esac
done
}

while :; do
      case $a in                             #case选择语句使用变量进行修正每一次的值
      1)
          echo -n -e "\033[31m请输入累加的初始值:\033[0m"
          read num1
          ;;
      2)
          echo -n -e "\033[31m请输入累加的最大值:\033[0m"
          read num2
          ;;
      3)
          echo -n -e "\033[31m请输入累加的自增量:\033[0m"
          read num3
          ;;
      esac

    tnum=num${a}                              #变量的嵌套
    eval number=$(echo \$$tnum)               #变量的嵌套

    if [ ! -z "$number" ]; then               #判断输入值是否不空,空则执行下一个循环
        n=$(echo $number|sed 's/[0-9]//g')    #判断输入是否是纯数字
        if [ -z $n ]; then
        ar[$a]=$number                        #将输入的值赋值给数组

        if [ $a -eq 2 ]; then                 #判断最大值是否已经赋值,如果已经赋值则判断大小
            if [ ${ar[1]} -gt ${ar[2]} ]; then    #判断起始数值是否大于结束数值
                echo -e "\033[31m你输入的起始数字大于结束数字!\033[0m"
                a=2
                cho $a                        #函数的调用
            fi
        fi

        if [ $a -eq 3 ]; then                 #判断赋值是否结束,结束则退出循环
            price=$((${ar[2]}-${ar[1]}))
            if [ ${ar[3]} -gt $price ]; then  #判断增量值是否符合标准
                a=3
                echo -e "\033[31m你输入的增量值不符合要求!\033[0m"
                cho $a                        #函数的调用
            else 
                break                         #满足所有条件退出循环
            fi
        fi

        let a++                               #变量用于数组下标,同时也用于case判断

        continue
    else
        a=$a                                  #任何一次输入不为纯数字时返回相应的case语句
        echo -e "\033[31m你输入的不是纯数字\033[0m"
        continue
    fi
    else
        a=$a                                  #任何一次输入为空时返回执行相应的case语句
        echo -e "\033[31m输入不能为空!\033[0m"
        continue
    fi
done

sum=0                                         #用于累加

#以下为调用数组for计算循环

for ((i=${ar[1]};i<=${ar[2]};i+=${ar[3]})); do
    sum=$(($sum+$i))
done

echo $sum

「一键投喂 软糖/蛋糕/布丁/牛奶/冰阔乐!」

几人行

(๑>ڡ<)☆谢谢老板~

使用微信扫描二维码完成支付

版权声明:本文为作者原创,如需转载须联系作者本人同意,未经作者本人同意不得擅自转载。
添加新评论
暂无评论