LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 753|回复: 4

请教一个小问题

[复制链接]
发表于 2005-12-31 15:34:14 | 显示全部楼层 |阅读模式
文件student中存放着学生的姓名,学号,成绩
要求:
显示出每个学生的姓名,学号,成绩及等级。(等级:90~100(A),80~89(B),70~79(C),60~69(D),0~59(E))。
计算并显示班级的平均成绩。
计算并显示每一等级的学生人数。

是不是用cat student把文件输入到管道,然后再用awk之类的命令进行匹配,调用函数进行分类?
还有怎样计算平均成绩和每一等级的学生人数?是不是设置全局变量之类的,本人初学linux shell编程,希望能得到指点,谢谢。
发表于 2005-12-31 17:42:11 | 显示全部楼层
本人水平有限,做的不好请见谅,另外求多少行也没记住,只写了求合,程序也没优化,做的老麻烦了,下边是我的程序

#!/bin/bash
sum=0
pingjun=0
cona=0
conb=0
conc=0
cond=0
cone=0
fun(){
        sum=`expr $3 + $sum`
        if [ $3 -le 100 ] && [ $3 -ge 90 ]
        then
                key="a"
                cona=`expr $cona + 1`
        fi

        if [ $3 -le 89 ] && [ $3 -ge 80 ]
        then
                key="b"
                conb=`expr $conb + 1`
        fi
        if [ $3 -le 79 ] && [ $3 -ge 70 ]
        then
                key="c"
                conc=`expr $conc + 1`
        fi
        if  [ $3 -le 69 ] && [ $3 -ge 60 ]
        then
                key="d"
                cond=`expr $cond + 1`
        fi
        if  [ $3 -le 59 ] && [ $3 -ge 0 ]
        then
                key="e"
                cone=`expr $cone + 1`
        fi

        if [ -e $1 ]
        then
                echo "ok"
        else
                echo $1 $2 $3 $key
        fi
}

while read line
do
        fun $line
done<$1
echo "总分数为"$sum
echo "A有"$cona "B有"$conb "C有"$conc "D有"$cond "E有"$cone


待读文件格式
张三 100 62
李四 101 78
王五 102 83
赵六 103 95
可七 104 44
hao  104 77
buhao 108 99
jiuhao 109 46

执行方法
./脚本名 待读文件

结果:
[root@localhost tt]# ./b.sh 2.txt
张三 100 62 d
李四 101 78 c
王五 102 83 b
赵六 103 95 a
可七 104 44 e
hao 104 77 c
buhao 108 99 a
jiuhao 109 46 e
总分数为584
A有2 B有1 C有2 D有1 E有2
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-12-31 22:16:56 | 显示全部楼层
谢谢,原来每一行的数据又可以分割的
回复 支持 反对

使用道具 举报

发表于 2006-1-3 12:24:02 | 显示全部楼层
这不是很ez吗
用c很容易实现的
回复 支持 反对

使用道具 举报

发表于 2006-1-3 14:04:16 | 显示全部楼层
假如你用C的话
肯定没有shell方便
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表