계산 덧셈과 합산을 결합하는 방법

계산 덧셈과 합산을 결합하는 방법

이것이 내가 지금까지 가지고 있는 것입니다. 루프가 완료될 때마다 사용자 입력을 가져오기 위해 카운트를 결합하고 이를 합산하여 입력의 평균을 생성하려면 어떻게 해야 합니까?

#!/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결국 당신은 "당신의 대답은 다음과 같습니다.맨 위반".

관련 정보