如何合并计数加法和求和

如何合并计数加法和求和

这是我到目前为止所拥有的。如何合并计数以在每次循环完成时获取用户输入并将它们加在一起并创建输入的平均值?

#!/bin/bash
#Variables
lower=1
middle=50
higher=100
notdone=true

while [ $notdone ]; do

#Pick a Number
echo "Please pick a number between 1 and 100: "
read input


#Loop until wiithin range
until [[ $input -ge $lower ]] && [[ $input -le $higher ]]; do
    echo "Number not in range. 
    Please pick a number between 1 and 100: "
    read input
done

echo "You picked $input"

if [[ $input -ge $middle ]]; then 
    echo "Your answer is in the top half"
    fi

if [[ $input -le $middle ]]; then
    echo "Your answer is in the top half"
    fi
done

答案1

$count回复您对问题的评论:在实际计算平均值之前您不需要。到那时,拥有就足够了

total=$(( total + input ))

这会将用户输入的内容添加到运行总计中。

然后平均值可以计算为$(( total / count ))(注意,由于 shell 只进行整数算术,这将是一个整数,请参阅“如何在 bash 或其他语言/框架中进行整数和浮点计算?”)。


其他事情:

您的$notdone变量设置为细绳 true并且你在 中使用它while [ $notdone ]。像这样的测试,在不带引号的字符串上,是脆弱的,你的while循环条件最好写成

while [ "$notdone" = "true" ]

您还应该考虑在代码中引用所有其他变量扩展,例如

if [[ "$input" -ge "$middle" ]]; then

这在输入循环中尤为重要,否则您将通过输入中间有空格的内容来生成语法错误。

既然你使用的是bash,上面也可以写成

if (( input >= middle )); then

你还缺乏退出主循环的方法,echo最后都说“你的答案在顶部一半”。

相关内容