gpt4 book ai didi

linux - 如何退出一个 while 循环,该循环使用数字和一个不会弄乱数学的字符

转载 作者:太空宇宙 更新时间:2023-11-04 10:21:28 25 4
gpt4 key购买 nike

我有一个脚本可以让用户输入他们想要的任意数量的数字,直到他们按下“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命令。

><用于字符串比较(与 [ 一起使用时需要转义);使用 -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

关于linux - 如何退出一个 while 循环,该循环使用数字和一个不会弄乱数学的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43697508/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com