KornShell脚本平均值比较

时间:2012-03-09 01:04:30

标签: shell unix ksh

我正在努力让这个KornShell(ksh)工作,但if语句似乎不起作用(我当然可能是错的)。

Total=`echo ${marks[1]}+${marks[2]}+${marks[3]}+${marks[4]}+${marks[5]} | bc`
    Average=`echo "$Total  5" | awk '{print $1 / $2}'`

    if [ "$Average" -le "11.5" ]; then 
        result="failing"
    else 
        result="passing"
    fi

    print "Total: $Total"
    print "Result: $Average"
    print "$result"

每当我运行它时,正确计算平均值和总数,但无论平均值是否<1,结果总是“失败”。 11.5。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

您必须为隐式转换显式声明ksh变量:

integer total_i
integer average_i

Total=`echo ${marks[1]}+${marks[2]}+${marks[3]}+${marks[4]}+${marks[5]} | bc`
Average=`echo "$Total  5" | awk '{print $1 / $2}'`

total_i = $Total
average_i = $Average

if [ average_i -le 11.5 ]; then 
    result="failing"
else 
    result="passing"
fi

print "Total: $Total"
print "Result: $Average"
print "$result" 

即使变量是整数,它们也可以容纳小数值。