我正在使用Korn shell脚本编写一个程序,该脚本实际上使用了两个不同的脚本,一个名为grade.sh,另一个名为GRADE.sh。在GRADE.sh中,它应该接受6个参数并将它们设置为等于变量,然后打印这些变量并找到你的成绩总和以及你的成绩的平均值。然后根据您的平均值确定您的字母等级。 grade.sh基本上是一个格式化脚本,以有组织的方式打印出GRADE.sh的内容。这是代码。我无法获得总和和平均值,也遇到了if语句的问题。如果你能帮助我找出我做错事的地方,我会非常感激!
grade.sh:
#! /bin/ksh
#Description: Prints out a grade report for multiple students.
printf "Date:"
printf "`date|cut -c1-10`,"
printf `date|cut -c25-28`
printf "\n"
print "Name Prog Labs Midterm Final Total Avg Grade"
GRADE.sh Akers John 90 88 80 70
GRADE.sh Eckert Hester 80 90 67 89
GRADE.sh Spence Frances 70 81 78 85
GRADE.sh Shaw Mary 88 79 90 78
GRADE.sh Gates William 67 66 80 90
GRADE.sh Thompson Ken 80 60 90 89
GRADE.sh:
#! /bin/ksh
#Description: Calculate total score and average of a student's grades.
fName=$2
lName=$1
prog=$3
lab=$4
mid=$5
final=$6
sum= $prog+$lab+$mid+$final
avg= $sum/4
printf "$fName $lName $prog $lab $mid $final"
if($avg>=90&&$avg<=100)
then
printf "%s" A
printf "\n"
elif($avg>=80&&$avg<90)
then
printf "%s" B
printf "\n"
elif($avg>=70&&$avg<80)
then
printf "%s" C
printf "\n"
elif($avg>=60&&$avg<70)
then
printf "%s" D
printf "\n"
else
printf "%s" F
printf "\n"
fi
我提前道歉,对Korn Shell的编码很新,这是我在这里发表的第一篇文章。谢谢你的帮助!
答案 0 :(得分:1)
这是让你入门的东西。请注意,您不需要两个脚本。您可以创建一个执行放坡的函数,并在脚本中调用该函数。您可以使用if .. then .. else
,我只是使用case
语句向您展示了另一个选项。此外,如果您使用printf
,则使用它来格式化输出。我会把它留给你。
#!/bin/ksh
get_grade() {
local fName=$2
local lName=$1
local prog=$3
local lab=$4
local mid=$5
local final=$6
local sum=$((prog + lab + mid + final))
local avg=$((sum / 4))
printf "$fName $lName $prog $lab $mid $final"
case 1 in
$((avg >= 90 && avg <= 100)))
printf " %s\n" A ;;
$(( avg >= 80 && avg < 90)))
printf " %s\n" B ;;
$((avg >= 70 && avg < 80)))
printf " %s\n" C ;;
$((avg >= 60 && avg < 70)))
printf " %s\n" D ;;
*)
printf " %s\n" F ;;
esac
}
printf "$(date +"Date: %a %b %d, %Y")\n"
printf "Name Prog Labs Midterm Final Total Avg Grade\n"
get_grade Akers John 90 88 80 70
get_grade Eckert Hester 80 90 67 89
get_grade Spence Frances 70 81 78 85
get_grade Shaw Mary 88 79 90 78
get_grade Gates William 67 66 80 90
get_grade Thompson Ken 80 60 90 89
Date: Sat Apr 05, 2014
Name Prog Labs Midterm Final Total Avg Grade
John Akers 90 88 80 70 B
Hester Eckert 80 90 67 89 B
Frances Spence 70 81 78 85 C
Mary Shaw 88 79 90 78 B
William Gates 67 66 80 90 C
Ken Thompson 80 60 90 89 C