이것이 내가 지금까지 가지고 있는 것입니다. 루프가 완료될 때마다 사용자 입력을 가져오기 위해 카운트를 결합하고 이를 합산하여 입력의 평균을 생성하려면 어떻게 해야 합니까?
#!/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
결국 당신은 "당신의 대답은 다음과 같습니다.맨 위반".