- 7.3. Операции сравнения
- Глава 8. Операции и смежные темы
- Логические И и ИЛИ
- Читайте также
- Логические данные
- Логические операторы
- Логические операторы
- 1. Логические команды
- Логические операции
- Логические И и ИЛИ
- Логические функции
- IV. Логические операции
- Логические операции
- Логические операторы
- Логические операции
- Логические операции
- Логические нарушения
- 55. Логические команды
- Операторы сравнения в UNIX shell
- Сравнение чисел
- Пример использования в IF
- Сравнение строк
- Пример использования в IF
- Несколько условий (логические операторы)
- Дополнительно
- Как написать IF в одну строку
- Арифметические операции
- Ошибка «Integer expression expected»
7.3. Операции сравнения
сравнение целых чисел
if [ «$a» -eq «$b» ]
if [ «$a» -ne «$b» ]
if [ «$a» -gt «$b» ]
больше или равно
if [ «$a» -ge «$b» ]
if [ «$a» -lt «$b» ]
меньше или равно
if [ «$a» -le «$b» ]
меньше или равно (внутри двойных круглых скобок)
больше (внутри двойных круглых скобок)
больше или равно (внутри двойных круглых скобок)
сравнение строк
if [ «$a» = «$b» ]
if [ «$a» == «$b» ]
if [ «$a» != «$b» ]
Этот оператор используется при поиске по шаблону внутри [[ . ]].
меньше, в смысле величины ASCII-кодов
if [[ «$a» if [ «$a» \ » необходимо экранировать внутри [ ].
больше, в смысле величины ASCII-кодов
if [[ «$a» > «$b» ]]
if [ «$a» \> «$b» ]
Обратите внимание! Символ «>» необходимо экранировать внутри [ ].
См. Пример 25-6 относительно применения этого оператора сравнения.
строка «пустая» , т.е. имеет нулевую длину
строка не «пустая» .
Оператор | Описание | Пример |
---|---|---|
-eq | [ $x -eq $y ] Равно. Для результат True необходимо, чтобы x был равен y. | [ 1 -eq 2 ] — False [ 3 -eq 3 ] — True |
-ne | [ $x -ne $y ] Не равно. Оператор обратный -eq. | [ 1 -ne 2 ] — True [ 3 -ne 3 ] — False |
-gt | [ $x -gt $y ] Больше. То есть проверяет больше ли x чем y. | [ 1 -gt 2 ] — False [ 3 -gt 3 ] — False [ 5 -gt 4 ] — True |
-lt | [ $x -lt $y ] Меньше. Проверяет, что число в левой части (x) меньше числа в правой (y) | [ 1 -lt 2 ] — True [ 3 -lt 3 ] — False [ 5 -lt 4 ] — False |
-ge | [ $x -ge $y ] Больше или равно. | [ 1 -ge 2 ] — False [ 3 -ge 3 ] — True [ 5 -ge 4 ] — True |
-le | [ $x -le $y ] Меньше или равно. | [ 1 -le 2 ] — True [ 3 -le 3 ] — True [ 5 -le 4 ] — False |
Пример использования в IF
if [ $x -eq $y ]
then
echo ‘true’
else
echo ‘false’
fi
Сравнение строк
Оператор | Описание | Пример |
---|---|---|
= | [ «$a» = «$b» ] Равно. То есть строка a равна строке b. | [ ‘linux’ = ‘windows’ ] — False [ ‘unix’ = ‘unix’ ] — True |
!= | [ «$a» != «$b» ] Не равно. Оператор обратный =. | [ ‘linux’ != ‘windows’ ] — True [ ‘unix’ != ‘unix’ ] — False |
= |
$b ]] Содержит.
То есть в строке a есть b.
Обратите внимание, что для данного оператора используются двойные квадратные скобки.
‘windows’ ]] — False
[[ ‘unix’ =
‘ni’ ]] — True
Оператор проверяет, является ли строка b с нулевым размером.
[ -z » ] — True
Оператор обратный -z.
[ -n » ] — False
Оператор проверяет, является ли строка b не пустой.
[ » ] — False
Оператор проверяет, существует ли файл $file.
[ -f » ] — False
Пример использования в IF
if [ «$a» = «$b» ]
then
echo ‘true’
elif [[ «$a» =
$b ]]
then
echo ‘true’
else
echo ‘false’
fi
Несколько условий (логические операторы)
Оператор | Описание | Пример |
---|---|---|
-a | [ $x -eq $y -a $z -le $w ] Логическое И. В данном примере, проверяет, что (x равно y) И (z меньше или равно w) | [ 1 -eq 2 -a 3 -le 4 ] — False [ 5 -eq 5 -a 3 -le 4 ] — True [ 5 -eq 5 -a 6 -le 4 ] — False |
-o | [ $x -ne $y -o $z -ge $w ] Логическое ИЛИ. В данном примере, проверяет, что (x не равно y) ИЛИ (z больше или равно w) | [ 1 -eq 2 -o 3 -le 4 ] — True [ 5 -eq 5 -o 3 -le 4 ] — True [ 5 -eq 5 -o 6 -le 4 ] — True [ 1 -eq 2 -o 6 -le 4 ] — False |
Дополнительно
Как написать IF в одну строку
if [ $x -ne 0 ]; then echo 1; fi
if [ $x -ne 0 -a $y -eq 1 ]; then echo 1; else echo 2; fi
Арифметические операции
Расчет можно выполнить одним из следующих методов:
sum=$(( $sum1 + $sum2 + $sum3 ))
sum=`expr $sum1 + $sum2 + $sum3`
* где операции могут быть следующие:
- + — сложение;
- — — вычитание;
- * — умножение;
- / — деление;
- % — остаток от деления;
- = — приравнивание.
Ошибка «Integer expression expected»
Чаще всего, возникает при попытках использовать не тот оператор, например для строки -le (который должен использоваться для числа).
Примеры неправильного использования операторов:
Источник