shell实例第17讲:连续输入4个100以内的数字,统计和、乘、平均、最小和最大教程
连续输入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可以指定小数位数