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

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 относительно применения этого оператора сравнения.

строка «пустая» , т.е. имеет нулевую длину

строка не «пустая» .

Оператор -n требует, чтобы строка была заключена в кавычки внутри квадратных скобок. Как правило, проверка строк, не заключенных в кавычки, оператором ! -z, или просто указание строки без кавычек внутри квадратных скобок (см. Пример 7-6), проходит нормально, однако это небезопасная, с точки зрения отказоустойчивости, практика. Всегда заключайте проверяемую строку в кавычки. [1]

Пример 7-5. Операции сравнения

Пример 7-6. Проверка — является ли строка пустой

Пример 7-7. zmost

построение сложных условий проверки

логическое И (and)

exp1 -a exp2 возвращает true, если оба выражения, и exp1, и exp2 истинны.

логическое ИЛИ (or)

exp1 -o exp2 возвращает true, если хотябы одно из выражений, exp1 или exp2 истинно.

Они похожи на операторы Bash && и ||, употребляемые в двойных квадратных скобках.

Операторы -o и -a употребляются совместно с командой test или внутри одинарных квадратных скобок.

Чтобы увидеть эти операторы в действии, смотрите Пример 8-3 и Пример 25-11.

Источник

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

Статья представляет из себя шпаргалку по операторам сравнения в системах на базе UNIX. Применимо к основным командным интерпретаторам — sh (Bourne Shell), bash (Bourne Again Shell), csh, tcsh и некоторым другим.

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

Оператор Описание Пример
-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.
Обратите внимание, что для данного оператора используются двойные квадратные скобки. [[ ‘linux’ =

‘windows’ ]] — False
[[ ‘unix’ =

‘ni’ ]] — True -z [ -z $b ] Проверка на нулевой размер.
Оператор проверяет, является ли строка b с нулевым размером. [ -z ‘linux’ ] — False
[ -z » ] — True -n [ -n $b ] Проверка на ненулевой размер.
Оператор обратный -z. [ -n ‘linux’ ] — True
[ -n » ] — False [ $b ] Проверка на пустоту.
Оператор проверяет, является ли строка b не пустой. [ ‘linux’ ] — True
[ » ] — False -f [ $file ] Проверка на существование файла.
Оператор проверяет, существует ли файл $file. [ -f ‘/etc/filename’ ] — True
[ -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 (который должен использоваться для числа).

Примеры неправильного использования операторов:

Источник

Как сравнивать строки в Bash

How to Compare Strings in Bash

Это руководство описывает, как сравнивать строки в Bash.

При написании сценариев Bash вам часто нужно сравнивать две строки, чтобы проверить, равны они или нет. Две строки равны, если они имеют одинаковую длину и содержат одинаковую последовательность символов.

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

Операторы сравнения — это операторы, которые сравнивают значения и возвращают true или false. При сравнении строк в Bash вы можете использовать следующие операторы:

  • string1 = string2 и string1 == string2 — Оператор равенства возвращает true, если операнды равны.
    • Используйте = оператор с test [ командой.
    • Используйте == оператор с [[ командой для сопоставления с образцом.
  • string1 != string2 — Оператор неравенства возвращает true, если операнды не равны.
  • string1 =

    regex — Оператор регулярного выражения возвращает true, если левый операнд соответствует расширенному регулярному выражению справа.

  • string1 > string2 — Оператор «больше чем» возвращает истину, если левый операнд больше правого, отсортированного по лексикографическому (алфавитному) порядку.
  • string1 — Оператор less than возвращает true, если правый операнд больше правого, отсортированного по лексикографическому (алфавитному) порядку.
  • -z string — Истина, если длина строки равна нулю.
  • -n string — Истина, если длина строки не равна нулю.

Ниже следует отметить несколько моментов при сравнении строк:

  • Пустое пространство должно быть использовано между бинарным оператором и операндами.
  • Всегда используйте двойные кавычки вокруг имен переменных, чтобы избежать каких-либо проблем с разделением слов или смещениями
  • Bash не разделяет переменные по «типу», переменные обрабатываются как целое число или строка в зависимости от контекста.

Проверьте, равны ли две строки

В большинстве случаев при сравнении строк вы хотите проверить, равны ли строки или нет.

Следующий скрипт использует оператор if и команду test, [ чтобы проверить, совпадают ли строки с = оператором:

Когда скрипт выполняется, он напечатает следующий вывод.

Вот еще один скрипт, который принимает входные данные от пользователя и сравнивает заданные строки. В этом примере мы будем использовать [[ команду и == оператор.

Запустите скрипт и введите строки при появлении запроса:

Вы также можете использовать логические и && и или || для сравнения строк:

Проверьте, содержит ли строка подстроку

Есть несколько способов проверить, содержит ли строка подстроку.

Один из подходов заключается в использовании подстроки с символами звездочки, * что означает совпадение всех символов.

Другой вариант — использовать оператор регулярного выражения, =

как показано ниже:

Точка, за которой следует звездочка, .* соответствует нулю или большему количеству вхождений любого символа, кроме символа новой строки.

Проверьте, пуста ли строка

Довольно часто вам также необходимо проверить, является ли переменная пустой строкой или нет. Вы можете сделать это, используя -n и -z оператор.

Сравнение строк с помощью оператора Case

Вместо использования тестовых операторов вы также можете использовать оператор case для сравнения строк:

Лексикографическое сравнение

Лексикографическое сравнение — это операция, в которой две строки сравниваются в алфавитном порядке путем сравнения символов в строке последовательно слева направо. Этот вид сравнения используется редко.

Следующие сценарии сравнивают две строки лексикографически:

Скрипт выведет следующее:

Вывод

Сравнение строк — одна из самых основных и часто используемых операций в сценариях Bash. Прочитав этот урок, вы должны хорошо понимать, как сравнивать строки в Bash. Вы также можете проверить наше руководство о конкатенации строк .

Источник

Как сравнить строки в Bash

При написании сценариев Bash вам часто нужно сравнивать две строки, чтобы проверить, равны они или нет. Две строки равны, если они имеют одинаковую длину и содержат одинаковую последовательность символов.

В этом руководстве описывается, как сравнивать строки в Bash.

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

Операторы сравнения — это операторы, которые сравнивают значения и возвращают истину или ложь. При сравнении строк в Bash вы можете использовать следующие операторы:

  • string1 = string2 и string1 == string2 — оператор равенства возвращает истину, если операнды равны.
    • Используйте оператор = с командой test [ .
    • Используйте оператор == с командой [[ для сопоставления с образцом.
  • string1 != string2 — оператор неравенства возвращает истину, если операнды не равны.
  • string1 =

    regex — Оператор регулярного выражения возвращает истину, если левый операнд совпадает с расширенным регулярным выражением справа.

  • string1 > string2 — оператор «больше» возвращает истину, если левый операнд больше правого, отсортированный в лексикографическом (алфавитном) порядке.
  • string1 — оператор «меньше» возвращает истину, если правый операнд больше правого, отсортированный в лексикографическом (алфавитном) порядке.
  • -z string — Истина, если длина строки равна нулю.
  • -n string — Истина, если длина строки отлична от нуля.

При сравнении строк следует учитывать несколько моментов:

  • Между бинарным оператором и операндами должен использоваться пробел.
  • Всегда используйте двойные кавычки вокруг имен переменных, чтобы избежать проблем с разделением слов или подстановкой слов.
  • Bash не разделяет переменные по «типу», переменные обрабатываются как целые или строковые в зависимости от контекста.

Проверьте, равны ли две строки

В большинстве случаев при сравнении строк вам нужно проверить, равны ли строки или нет.

Следующий сценарий использует оператор if и команду test [ чтобы проверить, совпадают ли строки с оператором = :

Когда сценарий будет выполнен, он напечатает следующий вывод.

Вот еще один сценарий, который принимает ввод от пользователя и сравнивает заданные строки. В этом примере мы будем использовать команду [[ и оператор == .

Запустите сценарий и введите строки при появлении запроса:

Вы также можете использовать логические и && и или || для сравнения строк:

Проверьте, содержит ли строка подстроку

Есть несколько способов проверить, содержит ли строка подстроку.

Один из подходов — использовать окружение подстроки символами звездочки * что означает соответствие всем символам.

Другой вариант — использовать оператор регулярного выражения =

как показано ниже:

Точка, за которой следует звездочка .* Соответствует нулю или более вхождений любого символа, кроме символа новой строки.

Проверьте, пуста ли строка

Довольно часто вам также нужно будет проверить, является ли переменная пустой строкой или нет. Вы можете сделать это с помощью операторов -n и -z .

Сравнение строк с оператором Case

Вместо использования тестовых операторов вы также можете использовать оператор case для сравнения строк:

Лексикографическое сравнение

Лексикографическое сравнение — это операция, при которой две строки сравниваются в алфавитном порядке путем последовательного сравнения символов в строке слева направо. Такое сравнение используется редко.

Следующие сценарии лексикографически сравнивают две строки:

Скрипт выдаст следующее:

Выводы

Сравнение строк — одна из самых основных и часто используемых операций в сценариях Bash. После прочтения этого руководства вы должны хорошо понимать, как сравнивать строки в Bash. Вы также можете ознакомиться с нашим руководством по объединению строк .

Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.

Источник

Читайте также:  Почему windows не обновляется до версии 2004
Оцените статью