2017-09-27 52 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 

不知道该程序的逻辑,但误差应该已经被清除。请检查