KornShell Script Сравнение средних - PullRequest
0 голосов
/ 09 марта 2012

Я пытаюсь заставить этот 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"

Всякий раз, когда я запускаю его, среднее значение и общее количество вычисляются правильно, но результат всегда "терпит неудачу" независимо от того, является ли среднее значение <11,5. </p>

Любая помощь очень ценится.

1 Ответ

0 голосов
/ 09 марта 2012

Вы должны явно объявить переменные 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" 

Даже если переменные целые , они могут содержать десятичные значения.

...