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

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

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

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

  • string1 = string2 и string1 == string2 - Оператор равенства возвращает true, если операнды равны.
  • Используйте оператор = с командой test [.
  • Используйте оператор == с командой [[ для сопоставления с образцом.
  • string1 != string2 - оператор неравенства возвращает true, если операнды не равны.
  • string1 =~ regex- Оператор regex возвращает true, если левый операнд соответствует расширенному регулярному выражению справа.
  • string1 > string2 - оператор greater than возвращает true, если левый операнд больше правого, отсортированного по лексикографическому (алфавитному) порядку.
  • string1 < string2 - оператор less than возвращает истину, если правый операнд больше правого, отсортированного по лексикографическому (алфавитному) порядку.
  • -z string - Истина, если длина строки равна нулю.
  • -n string - Истина, если длина строки ненулевая.

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

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

Проверка равенства двух струн

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

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

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

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

 

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

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

В результате получим

Проверка наличия в строке подстроки

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

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

Сценарий выдаст следующее эхо:

Другой вариант - использовать оператор regex =~, как показано ниже:

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

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

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

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

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

В результате получим

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

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

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

Сценарий выведет следующее:

Заключение

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

Понравилась статья? Поделиться с друзьями:
Добавить комментарий