有一份班级成绩单文件student_score.txt,字段tab键隔开,三列分别是name,age,score,如:tom 18 96,第一行是标题,每人成绩占一行,中间还有一些空行,使用shell计算这些班级的成绩平均分。
NAME AGE SCORE
tom 10 91
mike 9 90
amy 10 98
#!/bin/bash
#初始化变量
SCORE_ALL=0
STUDENT_NUM=0
#保存IFS变量
SAVEDIFS=$IFS
#IFS默认为space tab newline 这里不改变
INPUT_FILE=student_score.txt
#循环读入各行
while read NAME AGE SCORE
do
echo $SCORE
case $SCORE in
SCORE)
echo "这是第一行"
;;
*)
echo "STUDENT_NUM=$STUDENT_NUM SCORE_ALL=$SCORE_ALL "
if [ "$SCORE" = "" ]
then
echo "此行是空行"
else
STUDENT_NUM=`expr $STUDENT_NUM + 1`
SCORE_ALL=`expr $SCORE_ALL + $SCORE`
fi
;;
esac
done < $INPUT_FILE
#########
#输出结果
#########
echo "----------------"
echo "STUDENT_NUM=$STUDENT_NUM SCORE_ALL=$SCORE_ALL "
AVERAGE=`expr $SCORE_ALL / $STUDENT_NUM`
echo "平均成绩$AVERAGE"
#恢复IFS变量原值
IFS=$SAVEDIFS