假设score.txt文件中保存了三个班学生的考试成绩,请编写一段shell程序来计算每个班级的学生人数与平均分

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/02 11:34:04
假设score.txt文件中保存了三个班学生的考试成绩,请编写一段shell程序来计算每个班级的学生人数与平均分

假设score.txt文件中保存了三个班学生的考试成绩,请编写一段shell程序来计算每个班级的学生人数与平均分
假设score.txt文件中保存了三个班学生的考试成绩,请编写一段shell程序来计算每个班级的学生人数与平均分

假设score.txt文件中保存了三个班学生的考试成绩,请编写一段shell程序来计算每个班级的学生人数与平均分
#!/bin/sh
# averagescore.sh
#初始化变量
SCORE1=0
SCORE2=0
SCORE3=0
NUMBER1=0
NUMBER2=0
NUMBER3=0
#保存IFS变量
SAVEDIFS=$IFS
#使IFS变量为冒号
IFS=:
INPUT_FILE=score.txt
#循环读入各行
while read NAME CLASS SCORE
do
#各班级累计人数与总分
case $CLASS in
class1) NUMBER1=`expr $NUMBER1 + 1`
SCORE1=`expr $SCORE1 + $SCORE`
;;
class2) NUMBER2=`expr $NUMBER2 + 1`
SCORE2=`expr $SCORE2 + $SCORE`
;;
class3) NUMBER3=`expr $NUMBER3 + 1`
SCORE3=`expr $SCORE3 + $SCORE`
;;
*) echo "'hasename $0':unknow class $CLASS"
;;
esac
done < $INPUT_FILE
#计算平均分,保留两位小数
SCORE1=$(echo "scale=2; $SCORE1 / $NUMBER1")
SCORE2=$(echo "scale=2; $SCORE2 / $NUMBER2")
SCORE3=$(echo "scale=2; $SCORE3 / $NUMBER3")
#显示结果
echo " class student num average score"
echo "----------------------------------------"
echo " 1 $NUMBER1 $SCORE1 "
echo " 2 $NUMBER2 $SCORE2 "
echo " 3 $NUMBER3 $SCORE3 "
#恢复IFS变量原值
IFS=$SAVEDIFS