我有一个脚本可以让用户输入他们想要的任意数量的数字,直到他们按下“q”。现在我让它工作了,但它需要 q 并在其他数字应该被使用的数学中使用它。它还使用它来显示最高或最低的数字。
total=0
count=0
largest=num
smallest=num
while [ "$num" != "q"
do
echo "Enter your numbers when you are done enter q"
read num
total=`expr $total + $sum`
count=`expr $count + 1`
if [ "$num" > "$largest" ]
then
largest=$num
fi
if [ "$num" < "$smallest" ]
then
smallest=$num
fi
done
avg=`expr $total / $count`
echo "The largest number is: $largest"
echo "The smallest number is: $smallest"
echo "The sum of the numbers is: $total"
echo "The average of the numbers is: $avg"
在尝试将其用作数字之前,您不会检查它的第一个值是否num
为“q”。最简单的方法是编写一个带有显式break
;的“无限”循环。这避免了需要两个单独的read
命令。
>
and<
用于字符串比较(与 一起使用时需要转义[
);使用-gt
和-lt
代替。
您也不需要expr
用于整数运算。对于平均值,您需要使用bc
(或其他一些可以进行浮点运算的程序)。
total=0
count=0
largest=
smallest=
while : ; do
echo "Enter your numbers when you are done enter q"
read num
[ "$num" = q ] && break
total=$(($total + $sum))
count=$(($count + 1))
if [ -z "$largest" ] || [ "$num" -gt "$largest" ]; then
largest=$num
fi
if [ -z "$smallest" ] || [ "$num" < "$smallest" ]; then
smallest=$num
fi
done
# Avoid division by 0 and meaningless statistics if
# no numbers are entered.
if [ "$count" -gt 0 ]; then
avg=$( echo "$total / $count" | bc )
echo "The largest number is: $largest"
echo "The smallest number is: $smallest"
echo "The sum of the numbers is: $total"
echo "The average of the numbers is: $avg"
fi
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句