2017-09-27 3 views
-1

제 스크립트에 도움을 얻을 수 있기를 기대했습니다. 학점의 평균을 뱉어 내고 99로 나누는 gpa 계산기가 입력됩니다. 이 내가이 코드를 확인하는 bc 명령이없는 지금까지계산기의 스크립트 문제에 대한 조언

#! /bin/bash 
sum=0 
count=1 

read -p "Enter A Grade Point: " grade 
while (($(echo "$grade != 99" | bc))); do 


    count=$((count + 1)) 
    sum=$(echo "scale=2;($sum+$grade)" | bc) 
    read -p "Enter A Grade Point: " grade 
     if [[ "$grade" == 99 ]]; then 
    break 
     fi 
    exit 1 
    done 
    avg=$(echo "scale=2;($sum/$count)" | bc) 
     if ((avg < 4 )); then 
       echo "Your GPA is $avg" 
       echo "This is an B!" 
     elif 
      ((avg < 3 )); then 
       echo "Your GPA is $avg" 
       echo "This is a C!" 
     elif 
      ((avg < 2 )); then 
       echo "Your GPA is $avg" 
       echo "This is a D!" 
     elif 
      ((avg < 1 )); then 
      echo "Your GPA is $avg" 
      echo "This is a F!" 
     else 
      echo "Your GPA is $avg" 
      echo "This is a A!" 
     fi 
     exit 0 
+0

현재 직면하는 문제는 무엇입니까? –

+0

Im이 코드를 실행할 때 산술 토큰 오류가 있고 또한 99를 입력하면 루프를 끝내기 위해 어디에서 브레이크를 입력해야할지 모르겠습니다! – mncra7

+0

입력 할 때 99, 그 깨지 않니? –

답변

0

을 가지고 있지만, 이것을 시도하는 것이다.

#!/bin/bash 
sum=0 
count=1 

read -p "Enter A Grade Point: " grade 
while (($(echo "$grade != 99" | bc))) 
do 
    count=$((count + 1)) 
    sum=$(echo "scale=2;($sum+$grade)" | bc) 
    read -p "Enter A Grade Point: " grade 
done 
    avg=$(echo "scale=2;($sum/$count)" | bc) 
     if (($(echo "$avg 4" | awk '{print ($1 < $2)}'))); then 
       echo "Your GPA is $avg" 
       echo "This is an B!" 
     elif 
      (($(echo "$avg 3" | awk '{print ($1 < $2)}'))); then 
       echo "Your GPA is $avg" 
       echo "This is a C!" 
     elif 
      (($(echo "$avg 2" | awk '{print ($1 < $2)}'))); then 
       echo "Your GPA is $avg" 
       echo "This is a D!" 
     elif 
      (($(echo "$avg 1" | awk '{print ($1 < $2)}'))); then 
      echo "Your GPA is $avg" 
      echo "This is a F!" 
     else 
      echo "Your GPA is $avg" 
      echo "This is a A!" 
     fi 
     exit 0 
+0

시도했는데 오류가 발생했습니다. "sysntax 오류 : 잘못된 산술 연산자 – mncra7

+0

업데이트했습니다. 다시 시도하십시오. – mathB

+0

업데이트 된 코드를 시도한 후에 얻은 결과 (: 2.16 -lt 4 : 구문 오류 : 잘못된 산술 연산자 (오류 토큰은 ".16 -lt 4") – mncra7

0
#!/bin/bash 
sum=0 
count=1 
read -p "Enter A Grade Point: " grade 
while [ $grade != 99 ] 
do 
count=$((count + 1)) 
sum=$(echo "scale=2;($sum+$grade)" | bc) 
read -p "Enter A Grade Point: " grade 
echo "entered loop" 
done 
avg=$(echo "scale=2;($sum/$count)" | bc) 
    if [[ $avg < 4 ]] 
    then 
    echo "Your GPA is $avg" 
    echo "This is an B!" 
    elif [[ $avg < 3 ]] 
    then 
    echo "Your GPA is $avg" 
    echo "This is a C!" 
    elif [[ $avg < 2 ]] 
    then 
    echo "Your GPA is $avg" 
    echo "This is a D!" 
    elif [[ $avg < 1 ]] 
    then 
    echo "Your GPA is $avg" 
    echo "This is a F!" 
    else 
    echo "Your GPA is $avg" 
    echo "This is a A!" 
    fi 

프로그램의 논리에 확실하지만, 오류가 이제 제거해야하지.