Для сравнения строк и чисел используется оператор 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, где можно использовать достаточно сложные конструкции.