#!/bin/bash
set -x
count=0
number=0
loops=0
average=0
read -p " Please enter a number between 1 and 100? " number
while [ $count -lt $number ]
done
average=`expr $score / $number`
echo $average
ユーザーに1から100までの数字を入力するように要求し、トークン値-1を入力してループを終了するシェルプログラムを作成します。プログラムは、すべてのループ反復回数、合計回数、およびプログラム終了後の平均回数を維持する必要があります。
ステートメントを使用する必要があるようですが、if
どうすればよいかわかりません。
ベストアンサー1
これを行うより効率的な方法があるかもしれませんが、次のスクリプトはそのタスクを実行する必要があります。
#!/bin/bash
loops=0
sum=0
# Loop forever
while true; do
read -p "Please enter a number between 1 and 100: " input
# Check for the exit condition.
if [[ $input -eq -1 ]]; then
break
fi
# Use a regex to check that input is a one-digit, two-digit or three-digit number and that the input is in [1,100] .
if [[ $input =~ ^[0-9]{1,3}$ && $input -gt 0 && $input -le 100 ]]; then
# Use arithmetic expansion to increment loop counter and add the new input to sum.
((loops++))
((sum += input))
else
echo "Invalid input. Skipping..."
fi
done
# For the edge case where there is no valid input.
if [[ $loops -eq 0 ]]; then
echo "Average undefined - no valid input."
exit
fi
average=$((sum/loops))
echo "Average: $average"
実行例:
Please enter a number between 1 and 100: 2
Please enter a number between 1 and 100: 3
Please enter a number between 1 and 100: 4
Please enter a number between 1 and 100: 5
Please enter a number between 1 and 100: 6
Please enter a number between 1 and 100: -1
Average: 4