これが私が今まで持っているものです。ループが完了するたびにユーザー入力を取得するためにカウントを結合し、それらを合計して入力の平均を生成するにはどうすればよいですか?
#!/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 ))
(シェルは整数演算のみを実行するため、これは整数になります。」を参照)。Bashまたは他の言語/フレームワークで整数および浮動小数点計算を実行するには?")。
他のもの:
変数$notdone
が次に設定されました。ひも true
そして、あなたはそれで使用しますwhile [ $notdone ]
。引用符のない文字列に対するこのようなテストは脆弱であり、while
ループ条件は次のように書くのが最善です。
while [ "$notdone" = "true" ]
また、コード内の他のすべての変数拡張を参照することも考慮する必要があります。
if [[ "$input" -ge "$middle" ]]; then
これは入力ループで特に重要です。そうでない場合は、間にスペースがある内容を入力すると構文エラーが発生します。
を使用しているので、bash
上記は次のように書くこともできます。
if (( input >= middle )); then
また、メインループを終了する方法がありません。echo
結局、あなたは「あなたの答えは次のようになります。トップ半分」。