2012-03-09 91 views
0

我试图让这个KornShell(ksh)工作,但if语句似乎不工作(我当然可能是错的)。KornShell脚本比较平均

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" 

每当我运行,平均和总计算正确无误,但结果始终是“没有”,无论平均是否是< 11.5。

任何帮助,非常感谢。

+0

如果ksh有一个可以识别浮点值的内建值,我会感到惊讶。 '['通常只用整数进行算术运算 – 2014-01-02 21:03:51

回答

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" 

即使变量整数可以容纳十进制值。