2012-03-09 80 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" 

即使變量整數可以容納十進制值。