简单的shell脚本练习

有一份班级成绩单文件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

你可能感兴趣的:(Shell)