Операторы сравнения Bash

Для сравнения строк и чисел используется оператор test (квадратные скобки).

Сравнение чисел:

-eq (equal)             равно
-ne (not equal)         не равно
-lt (less then)         меньше, чем
-le (less oq equal)     меньше, или равно
-gt (greater then)      больше, чем
-ge (greater or equal)  больше или равно

Пример. С помощью оператора проверки, сравним числа, «7» и «5». Если 7 окажется больше (кто бы мог подумать! 🙂 ), при помощи логического «И», выведем сообщение «Больше»:

[[ "7" -gt "5" ]] && echo "Больше"

Пример. Запишем в переменную текущий час. С помощью оператора проверки проверим, если текущий час больше 12 и меньше 16, выведем сообщение «Сейчас день».

HOUR=$(date +%H); [[ "$HOUR" -gt "12" ]] && [[ "$HOUR" -lt "16" ]] && echo "Сейчас день"

Сравнение строк:

==     равно
!=     не равно
<      меньше
>      больше

При сравнении строк этими операторами, сравниваются значения ASCII символов. Поэтому, в большинстве случаев, при сравнении строк имеет смысл использовать только проверки «равно» и «не равно».

Пример. Проверим, если текущий пользователь «root» (переменная «$USER»), то выведем сообщение «Вы — суперпользователь!»

[[ "$USER" == "root" ]] && echo "Вы - суперпользователь!"

Пример. Проверим, если скрипту в виде параметра передано имя Геннадий, то скрипт выведет сообщение: «Ура, Геннадий!»

#!/bin/bash

[[ "$1" == "Геннадий" ]] && echo "Ура, Геннадий!"

Настоящую мощь операторов сравнений мы увидим в связке с условным оператором if, где можно использовать достаточно сложные конструкции.