Сравнение строк – распространенная задача при работе со скриптами, пользовательским вводом или строковыми данными.
В командной оболочке вам может понадобиться проверить, существует ли значение в другой строке, определить, имеют ли две строки одинаковую длину, проверить начало или конец слова, или выполнить любой другой тип сравнения.
Стандартные инструменты Unix не предоставляют много возможностей для сравнения строк; традиционное лексическое сравнение (например, проверка одинаковой длины двух слов и сравнение каждого символа в отдельности) трудно эффективно реализовать в коде, и оно не так ценно для динамического языка, как Bash.
В этой статье описаны различные способы сравнения строк в Bash и несколько связанных с ними команд.
Операторы сравнения строк
Мы можем использовать операторы сравнения с операторами bash if для сравнения двух строк.
Вот список операторов сравнения для работы со строками в оболочке bash.
Оператор | Подробности |
---|---|
string1 == string2 | Возвращает true, если обе строки равны. |
string1 != string | Возвращает true, если обе строки не равны. |
string =~ regex | Сравнить string 1 с регулярным выражением и везращает true |
-z string | Возвращает true, если длина заданной строки равна нулю (0) |
-n string | Возвращает true, если длина заданной строки не равна нулю |
Теперь мы рассмотрим вышеупомянутые операторы сравнения по очереди на примерах.
Сравнение двух строк в Bash (==)
Если вам нужно проверить, равны ли две строки, используйте оператор ==.
Эти операторы сравнивают левый операнд с правым операндом и возвращают true, если они оба совпадают.
Давайте разберемся на примере.
В скрипте инициализируйте две переменные строкой.
Затем используйте оператор if, чтобы сравнить, равны ли обе строки или нет, используя оператор ==.
#!/usr/bin/env bash STR1="Itisgood" STR2="Itisgood" if [ "$STR1" == "$STR2" ] then echo "Both strings are equal" else echo "Both strings are not equal" fi
Проверка неравенства двух строк (!=)
#!/usr/bin/env bash STR1="Itisgood" STR2="HelloWorld" ##Check if both strings are not equal if [ "$STR1" != "$STR2" ] then echo "True, both strings are not equal" else echo "False, both strings are equal" fi
Сравнение строк с помощью регулярного выражения
#!/usr/bin/env bash STR="TecAdmin" if [[ "$STR" =~ ^Tec ]] then echo "Yes, the regular expression matches " else echo "Regular expression not matches " fi
#!/usr/bin/env bash read -p "Input a number: " VAR ## Check if the input value is a number if [[ "$VAR" =~ ^[0-9]+$ ]] then echo "Given input is a number" else echo "Sorry, input is not a number" fi
Input a number: 12 Given input is a number
Input a number: 1234a Sorry, input is not a number
Проверим, не является ли строка пустой
#!/usr/bin/env bash read -p "Type anything: " VAR if [[ -z $VAR ]]; then echo "Empty string" else echo "You type: ${VAR}" fi
Type anything: Empty string
Снова запустите приведенный выше скрипт и введите что-нибудь, когда появится запрос.
Type anything: itisgood You type: itisgood
Заключение
В этом руководстве мы рассмотрели сравнение строк в скриптах bash.
Вы также можете проверить, является ли строка пустой.
Также приведен пример проверки того, является ли входное значение числом или нет.
см. также:
- 🐧 Bash скрипты: Пример установки переменных
- 🐧 Команда Bash Printf
- 🐧 Bash Select (создание меню в скриптах shell)
- 🐧 Перенаправление Bash объяснение с примерами
- 📜 Bash – как перенаправить стандартный вывод (stdout) и стандартную ошибку (stderr ) в один и тот же файл
- 🐧 Как запускать команды Bash в фоновом режиме в Linux