2012-03-09 16 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に浮動小数点値を認識する '[' builtinがある場合、私は驚くでしょう。 '['は通常は整数でのみ算術演算を行います –

答えて

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" 

変数が整数ているにもかかわらず、彼らは小数点以下の値を収容することができます。