So I have this script I've been working on to get input for grades and then it'll calculate them with the weight of each section. At the end, it'll output a letter grade depending on the calculated grade. My code is fine until the if-else statement, where I'll start getting errors of an illegal number in the condition of each if-else statement.
#!/bin/sh
#Calculate weighted grade and output grade letter
echo "What is your total Lab/Assignments grade?"
read labGrade
echo "What is your Midterm grade?"
read midtermGrade
echo "What is your total Quizzes grade?"
read quizGrade
echo "What is your Final Exam grade?"
read finalGrade
weightedLab=echo "0.25*$labGrade" | bc
weightedMidterm=echo "0.30*$midtermGrade" | bc
weightedQuiz=echo "0.15*$quizGrade" | bc
weightedFinal=echo "0.30*$finalGrade" | bc
totalGrade=echo "$weightedLab + $weightedMidterm + $weightedQuiz + $weightedFinal" | bc
if [ $totalGrade -ge 90.00 ]
then
echo "Your total grade is an A+!"
elif [ $totalGrade -ge 85.00 -a $totalGrade -le 89.00 ]
then
echo "Your total grade is an A!"
elif [ $totalGrade -ge 80.00 -a $totalGrade -le 84.00 ]
then
echo "Your total grade is an A-!"
elif [ $totalGrade -ge 76.00 -a $totalGrade -le 79.00 ]
then
echo "Your total grade is a B+"
elif [ $totalGrade -ge 72.00 -a $totalGrade -le 75.00 ]
then
echo "Your total grade is a B"
elif [ $totalGrade -ge 68.00 -a $totalGrade -le 71.00 ]
then
echo "Your total grade is a B-"
elif [ $totalGrade -ge 64.00 -a $totalGrade -le 67.00 ]
then
echo "Your total grade is a C+"
elif [ $totalGrade -ge 60.00 -a $totalGrade -le 63.00 ]
then
echo "Your total grade is a C"
elif [ $totalGrade -ge 56.00 -a $totalGrade -le 59.00 ]
then
echo "Your total grade is a C-"
elif [ $totalGrade -ge 50.00 -a $totalGrade -le 55.00 ]
then
echo "Your total grade is a D"
else
echo "Your total grade is an F"
fi
What is your total Lab/Assignments grade?
100
What is your Midterm grade?
100
What is your total Quizzes grade?
100
What is your Final Exam grade?
90
./A2.sh: 20: [: Illegal number: 97.00
./A2.sh: 23: [: Illegal number: 97.00
./A2.sh: 26: [: Illegal number: 97.00
./A2.sh: 29: [: Illegal number: 97.00
./A2.sh: 32: [: Illegal number: 97.00
./A2.sh: 35: [: Illegal number: 97.00
./A2.sh: 38: [: Illegal number: 97.00
./A2.sh: 41: [: Illegal number: 97.00
./A2.sh: 44: [: Illegal number: 97.00
./A2.sh: 47: [: Illegal number: 97.00
Your total grade is an F
How can I change the code to properly compare the values?
ksh93
orzsh
.. – fpmurphy Apr 02 '21 at 21:58[ 97.00 -ge 90.00 ]
. – G-Man Says 'Reinstate Monica' Apr 13 '21 at 06:21