You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

35 lines
995 B

#!/usr/bin/env bash
num_students=$1
declare -a students
if [ $# -ne 1 ]; then
echo "Error: expect 1 argument only!" >/dev/stderr
exit 1
fi
for ((i = 0; i < num_students; i++)); do
read -p "Student Name #$((i + 1)): " name
read -p "Student Grade #$((i + 1)): " grade
students+=("$name $grade")
if [ $(expr "$grade" \> 100) -eq 1 ] || ! [[ "$grade" =~ ^[0-9]+$ ]]; then
echo "Error: The grade '$grade' is not a valid input. Only numerical grades between 0 and 100 are accepted." >/dev/stderr
exit 1
fi
done
for student in "${students[@]}"; do
name=$(echo $student | awk '{print $1}')
grade=$(echo $student | awk '{print $2}')
if [ "$grade" -ge 90 ]; then
echo "$name: You did an excellent job!"
elif [ "$grade" -ge 70 ]; then
echo "$name: You did a good job!"
elif [ "$grade" -ge 50 ]; then
echo "$name: You need a bit more effort!"
else
echo "$name: You had a poor performance!"
fi
done