Panther,
Nuk e di kur e kopjove kodin tim por sigurohu qe ke marre kopjen e fundit sepse bera ate ndryshimin qe me tha cunimartum per `basename $0`
Sigurohu qe ne fillim dhe ne fund te programit, rreshti i menyres se perdorimit eshte si me poshte:
Kodi:
echo 'usage: '`basename $0`' ';
Ketu ke dhe komentet ne shqip per funksionin e te gjithe rreshtave
Kodi:
#!/bin/sh
# nqs nuk jane dhene te pakten 2 argumenta (studenti, dosja),
# printo menyren e perdorimit
if [ $# -lt 2 ];
then
echo 'usage: '`basename $0`' ';
exit 0; # mbylle programin
fi
student=$1; # merr emrin e studentit nga argumenti i pare
shift; # fshije emrin e studentit nga lista e argumentave
valid_dirs=0; # numri i dosjeve qe jane te vlefshme (kurset)
course_grade=0; # shuma e notave te nje kursi
course_grades_total=0; # shuma e mesatareve te te gjitha kurseve
gpa=0; # mesatarja e te gjithe kurseve
while [ $# -gt 0 ]; # per cdo argument pas emrit te studentit
do
if [ -d $1 ]; # nqs dosja eshte e vlefshme
then
cd $1; # hape dosjen
valid_dirs=`expr $valid_dirs + 1`; #rrite numrin e dosjeve te sakta
for files in *; #per cdo skedar brenda dosjes
do
# gjej vetem rreshtat qe kane:
# ruaji ne skedarin _temp
# nqs ka gabime hidhi ne skedarin _temp2 qe te mos dalin ne ekran
cat "$files" 2> ../${student}_temp2 | grep "^$student[ ][0-9+]" > ../${student}_temp;
# hap skedarin dhe merr tre fjale
# keyword = emri i studentit
# score = nota e studentit
# other = tekst tjeter qe mund te jete pas notes se studentit
read < ../${student}_temp keyword score other;
if [ "$score" = '' ]; # nqs nuk gjendet asnje note per studentin
then
score=0; # zere noten 0
fi
course_grade=`expr $course_grade + $score`; # ruaj shumen e pikeve per kete kurs
done # tani mbaruam me te gjithe skedaret brenda dosjes
cd ..; # mbylle dosjen
# llogarit noten perfundimtare per kursin
# nqs shuma >= 90 atehere nota = 9
# ose nqs shuma >= 80 atehere nota = 8
# ose nqs shumta >=75 atehere nota = 7
# ..........
if [ $course_grade -ge 90 ]; then course_grade=9;
elif [ $course_grade -ge 80 ]; then course_grade=8;
elif [ $course_grade -ge 75 ]; then course_grade=7;
elif [ $course_grade -ge 70 ]; then course_grade=6;
elif [ $course_grade -ge 65 ]; then course_grade=5;
elif [ $course_grade -ge 60 ]; then course_grade=4;
elif [ $course_grade -ge 55 ]; then course_grade=3;
elif [ $course_grade -ge 50 ]; then course_grade=2;
elif [ $course_grade -ge 40 ]; then course_grade=1;
else course_grade=0;
fi
# mblidh notat e te gjitha kurseve
course_grades_total=`expr $course_grades_total + $course_grade`;
echo "$1 $course_grade"; # printo
fi
course_grade=0; # ktheje noten e kursit ne 0 sepse mbaruam
shift; # fshije kete kurs dhe hidhu tek tjetri
done # mbaruan te gjithe argumentat e dosjeve
if [ $valid_dirs -ne 0 ]; # nqs kemi te pakten nje dosje te vlefshme
then
gpa=`expr $course_grades_total / $valid_dirs`; # llogarit mesataren
echo "GPA $gpa"; # printo mesataren ne ekran
rm ${student}_temp*; # fshi skedaret e perkohshem qe krijuam me lart
else # nqs te gjitha dosjet ishin te pavlefshme
# printo menyren e perdorimit:
# `basename $0` printon emrin e skriptit
echo 'usage: '`basename $0`' ';
fi
Krijoni Kontakt