计算两数值之间的和-第三版 本文共有3808个字,关键词: ``` #!/bin/bash #Version:0.3.5 #Author:stone #Discription:get sum. a=1 #给变量赋初始值,用于case选择、数组下标和退出判断 sum=0 #用于累加 function sm() { #以下为调用数组for计算循环 for ((i=$1;i<=$2;i+=$3)); do sum=$(($sum+$i)) done echo $sum } 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 -p颜色输出 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选择语句使用a变量进行修正每一次的值 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} #变量的嵌套,将case语句选择后的值(num${a}中的值),赋值给tnum eval number=$(echo \$$tnum) #变量的嵌套,使用eval,将$$tnum当做两条命令执行,即$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 #确定a的值,由于在上一层有过判断,此处可省 cho $a #函数的调用 fi fi if [ $a -eq 3 ]; then #判断赋值是否结束,结束则退出循环 price=$((${ar[2]}-${ar[1]})) if [ ${ar[3]} -gt $price ]; then #判断增量值(步长)是否符合标准 a=3 #确定a的值,由于在上一层有过判断,此处可省 echo -e "\033[31m你输入的增量值不符合要求!\033[0m" cho $a #函数的调用 else sm ${ar[*]} #调用函数进行计算 exit 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 ``` 「一键投喂 软糖/蛋糕/布丁/牛奶/冰阔乐!」 赞赏 × 几人行 (๑>ڡ<)☆谢谢老板~ 2元 5元 10元 50元 100元 任意金额 2元 使用微信扫描二维码完成支付 版权声明:本文为作者原创,如需转载须联系作者本人同意,未经作者本人同意不得擅自转载。 shell脚本 2017-03-16 评论 1808 次浏览