Still a missing part, the averaging: numerical computations, in ksh/bash, can be done by including an expression by $(( )), like:
grade=$(( $grade1 + $grade2 ))
etc... it is faster to experiment than to describe it.
Main Topics
Browse All TopicsI am not familiar with Unix/Linux at all and have fallen behind in my class trying to figure this stuff out. I need help. I have two more weeks in this class and I need to have the below pseudo solved as soon as possible. I am lost trying to do this. Can you solve?
1. Create a shell script in your home directory.
2. Convert the pseudocode below into a script.
3. Save the script.
4. Execute the script and input the 3 grades when prompted.
5. Provide script and captured output for assignment.
Pseudocode
· Read in 3 grades from the keyboard
· Average the grades
· Display the appropriate letter grade for the number grade using this scale:
o 90 to 100: Display a grade of A
o 80 to 89: Display a grade of B
o 70 to 79: Display a grade of C
o 65 to 69: Display a grade of D
o 0 to 64: Display a grade of F
This question is in progress.
Our experts are working on an answer right now.
Sign up for immediate access to the solution once it becomes available.
Experts Exchange has been collecting answers to technology questions since 1996…3 million and counting! If you have a question, chances are we already have your answer.
If you can't find the exact answer you're looking for, ask our exclusive community of 50,000 experts. You’ll get a personalized answer from a trusted professional.
Thousands of free tech tips, tricks, how-to’s and tutorials are available in our peer reviewed articles section. See for yourself how smart our experts are, no login required.
Access the answers to your technology questions today.
30-day free trial. Register in 60 seconds.
Members of the expert community talk about why the experience at Experts Exchange is different than what you will find anywhere else.

Try it out and discover for yourself.
30-day free trial. Register in 60 seconds.
Join the community of experts here and help other tech pros by answering question in your area of expertise. You can earn FREE access to all Experts Exchange's premium features and resources.
Example of what the instructor emailed me to assist. Will this help with the missing part. I did not understand how to apply it.
Below are tips to help you with this week's assignment.
This is how you would declare your variables:
declare -i GRADE1
This is how you would read in your grades from the keyboard:
read -p "Please enter your first grade : " GRADE1
This is how you would average your grades:
((AVERAGE=($GRADE1 + $GRADE2 + $GRADE3)/3))
Ok, please check below and tell me if I am even close....
declare -iGrade1
read -p Please enter your first grade: Grade1 Grade1
if [ $Grade1 -ge 90 -a $Grade1 -le 100]
then
read -p Enter Grades Grades
echo A
then
declare -iGrade2
read -p Please enter your first grade: Grade2 Grade2
if [ $Grade2 -ge 89 -a $Grade2 -le 80]
then
read -p Enter Grades Grades
echo B
then
declare -iGrade3
read -p Please enter your first grade: Grade3 Grade3
if [ $Grade3 -ge 79- a $Grade3 -le 70]
then
read -p Enter Grades Grades
echo C
then
declare -iGrade4
read -p Please enter your first grade: Grade4 Grade4
if [ $Grade4 -ge 65-a $Grade4 -le 69]
then
read -p Enter Grades Grades
echo D
then
declare -iGrade5
read -p Please enter your first grade: Grade5 Grade5
if [ $Grade5 -ge 0 -a $Grade5 -le 64]
then
read -p Enter Grades Grades
echo F
fi
then
if [[ GRADE1= A || GRADE2= B || GRADE3= C || GRADE4= D || GRADE5= F ]]
then ((Average=($Grade1 + $Grade2 + $Grade3)/3))
I did not know this syntax:
((AVERAGE=($GRADE1 + $GRADE2 + $GRADE3)/3))
actually it works but it is equivalent to
AVERAGE=$((($GRADE1+$GRADE
which I prefer, see previous comment. I suggest you to open a terminal and test these commands interactively before putting all together in a script, you have already all the information.
No, you should first read GRADE1, then GRADE2 then GRADE3, without any if condition, then compute the average, then print A, B, C.. F according to the result of the average with the if conditions.
Notice that variables in Unix shell are case sensitive, so Grade1 and GRADE1 are different. Also make sure that you use ASCII quote characters " , I think you are using some typographic quote characters in your test, maybe from a word processor, that will not work if pasted into a script.
I am clueless when it comes to shell script. I posted an assignment for assistance but still did not get the understanding of your reply. For every question asked I go a question in reply. I posted what I had and still haven't gotten a reply. I have decided to find someone else who maybe able to do this for me. I am not interested in shell script because I'll never use it again after this class, it's just a requirement.
It is a useful skill and while you are probably stressed out, you would regret later why you didn't do just a few more hours of work. Let me give you a few hints. So read very carefully and I am sure if you try to apply yourself, you will not have any problem in doing it.
I am assuming that you can use bash. The way to check it is:
Issue the command
which bash
And it should simply return the path, may be /bin/bash.
If you don't have bash, you can try which ksh, it should work with ksh also.
Modify the script with your favorite editor
The first line should say:
#!/bin/bash
If you don't have bash, you can try which ksh, it should work with ksh also.
Now assume that total of points is zero. This would help us to run the loop.
total=0
Run the following loop. You know you can play with it by printing value --> echo $i to see how values change in loop.
For mathematical conditions in bash and ksh you should use (( )) instead of [[ ]] pair.
for i in first second third
do
read -p "Enter $i points " points
total=$(( total + points ))
done
After this loop, total has the total of all points. To get the average you need to divide it by three.
Please play with it, print values by using echo and see how it works. Modify it to see the change in behavior.
average=$(( total / 3 ))
So far so good. You can now print the value $average by using echo command. Save it and run and see if it works without an error.
Conditions should work without a problem. Actually in the if , elif loop sequence, it the first condition is satisfied, it would not check the rest. This means you don't need to check with AND or OR. It should be something like.
if (( average >= 90 ))
then
grade=A
elif (( average >=80 )) #We already know it is not 90 or above otherwise it would not check this condition
then
grade=B
#Can put more conditions here
fi
Finally, simply print the grade by saying this
echo "Final grade is: $grade"
Hope it helps. Please play with it and learn it by modifying it. Don't be afraid to get error messages.
Business Accounts
Answer for Membership
by: TintinPosted on 2009-10-28 at 22:51:38ID: 25690976
As this is homework, we can't give you the full answer, but we can point you in the right direction.
To read in input
use
read variable
to check the grade, use an if elsif block,eg:
if [ $grade -ge 90 -a $grade -le 100 ]
then
...
elif [ $grade -ge 90 -a -$grade -le 89 ]
then
..
fi