2017-09-27 55 views
-1

我希望我能得到一些幫助我的腳本。它是一個gpa計算器,輸出平均分數點,然後輸入99。 這是我迄今爲止意見與腳本問題與計算器

#! /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

當運行代碼時,我有一個算術令牌錯誤,並且我不確定在輸入99後輸入一箇中斷以結束循環! – mncra7

+0

當你輸入99時,它不破? –

回答

0

我沒有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 
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 error:無效的算術運算符 – mncra7

+0

我更新了答案再試試 – mathB

+0

什麼我 ((試圖YOUT更新的代碼後得到:2.16 -lt 4:語法錯誤:無效的算術運算符(錯誤標記爲「0.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 

不知道該程序的邏輯,但誤差應該已經被清除。請檢查