连续输入4个100以内的数字,统计和、乘、平均、最小和最大

#!/bin/bash
#作者:魏波
#时间:2017.02.04

COUNT=1
SUM=0
MIN=0
MAX=0
AVG_INT=0
AVG_FLOAT=0
MUL=1
while [ $COUNT -le 4 ]
do
    read -p "请输入1-10个整数:" input_number
    if [[ ! $input_number =~ ^[0-9]+$ ]]; then
        echo "输入必须是整数!"
        exit 1
    elif [[ $input_number -gt 100 ]]; then
        echo "输入必须是100以内!"
        exit 1
    fi
    SUM=$(($SUM+$input_number))
    AVG_INT=`expr $SUM / $COUNT`
    AVG_FLOAT=`echo "scale=2;$SUM / $COUNT" | bc `
    MUL=`expr $input_number \* $MUL`
    [ $MIN -gt $input_number ] && MIN=$input_number
    [ $MAX -lt $input_number ] && MAX=$input_number
    let COUNT++
done

echo "MIN: $MIN"
echo "MAX: $MAX"
echo "SUM: $SUM"
echo "AVG_INT: $AVG_INT"
echo "AVG_FLOAT: $AVG_FLOAT"
echo "MUL: $MUL"

结果:

说明:

1、 if [[ ! $input\_number =~ ^\[0-9\]+$ ]]

(1)=~表示匹配

(2)^表示是以什么开头

(3)[0-9]表示范围内都是数字


(4)+表示一个或多个

(5)$表示结尾

总的来说就是:输入的变量input\_number匹配到的不是以数字开头并结尾的就执行if里面的动作

2、AVG\_INT=expr $SUM / $COUNT

expr /: 表示整数的除法

3、 AVG\_FLOAT=echo "scale=2;$SUM / $COUNT" | bc

scale可以指定小数位数

标签: shell, echo, input, number, SUM, COUNT, AVG

相关文章推荐

添加新评论,含*的栏目为必填