3

ввод bash:

if [[ 167 > 10800 ]]
then
    echo "I can't compare"
fi

выход bash:

I can't compare

Я думаю, вопрос довольно очевиден ...

3 ответа3

8

Символ > не работает для того типа сравнения, который вы хотите. Вы должны использовать -gt:

if [[ 167 -gt 10800 ]]
then
    echo "I can't compare"
fi

И если вы хотите сделать сравнение меньше, вам нужно сделать -lt . Чтобы увидеть, какие другие опции вам нужно сделать для сравнения, посмотрите страницу test .

7

Цитировать со страницы руководства bash(1) :

При использовании с [[, операторы <и> лексикографически сортируются с использованием текущей локали.

Таким образом, 167 действительно больше, чем 10800, так как 6 - это больший символ ASCII, чем 0.

6

Используйте изогнутые скобки для точного сравнения чисел

if (( 167 > 10800 ))
then
    echo "I can't compare"
fi

Хорошее резюме здесь: http://fvue.nl/wiki/Bash:_Numeric_comparison

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .