20 Bash Tricks in 5 Minutes - Spencer Krum
Оглавление:
- Операторы сравнения
- Проверьте, содержит ли строка подстроку
- Проверьте, пуста ли строка
- Сравнение строк с помощью оператора Case
- Лексикографическое сравнение
- Вывод
При написании сценариев Bash вам часто нужно сравнивать две строки, чтобы проверить, равны они или нет. Две строки равны, если они имеют одинаковую длину и содержат одинаковую последовательность символов.
Этот туториал описывает, как сравнивать строки в Bash.
Операторы сравнения
Операторы сравнения - это операторы, которые сравнивают значения и возвращают true или false. При сравнении строк в Bash вы можете использовать следующие операторы:
-
string1 = string2
иstring1 == string2
- оператор равенства возвращает true, если операнды равны.- Используйте оператор
=
сtest
; then echo "Strings are equal." else echo "Strings are not equal." fi
; then echo "Strings are equal." else echo "Strings are not equal." fi
Когда скрипт выполняется, он выведет следующий вывод.
Strings are equal.
Вот еще один скрипт, который принимает входные данные от пользователя и сравнивает заданные строки. В этом примере мы будем использовать
]; then echo "Strings are equal." else echo "Strings are not equal." fi
]; then echo "Strings are equal." else echo "Strings are not equal." fi
Запустите скрипт и введите строки при появлении запроса:
Enter first string: Linuxize Enter second string: Ubuntu Strings are not equal.
Вы также можете использовать логические и
&&
и или||
сравнить строки:] && echo "Equal" || echo "Not equal"
Проверьте, содержит ли строка подстроку
Есть несколько способов проверить, содержит ли строка подстроку.
Один из подходов заключается в использовании подстроки с символами звездочки
*
что означает совпадение всех символов.#!/bin/bash VAR='GNU/Linux is an operating system' if]; then echo "It's there." fi
Скрипт отобразит следующее:
It's there.
Другой вариант - использовать оператор регулярного выражения
=~
как показано ниже:#!/bin/bash VAR='GNU/Linux is an operating system' if]; then echo "It's there." fi
Точка, за которой следует звездочка
.*
Соответствует нулю или большему числу вхождений любого символа, кроме символа новой строки.Проверьте, пуста ли строка
Довольно часто вам также необходимо проверить, является ли переменная пустой строкой или нет. Вы можете сделать это с помощью операторов
-n
и-z
.#!/bin/bash VAR='' if]; then echo "String is empty." fi
String is empty.
#!/bin/bash VAR='Linuxize' if]; then echo "String is not empty." fi
Сравнение строк с помощью оператора Case
Вместо использования тестовых операторов вы также можете использовать оператор case для сравнения строк:
#!/bin/bash VAR="Arch Linux" case $VAR in "Arch Linux") echo -n "Linuxize matched";; Fedora | CentOS) echo -n "Red Hat";; esac
Лексикографическое сравнение
Лексикографическое сравнение - это операция, в которой две строки сравниваются в алфавитном порядке путем сравнения символов в строке последовательно слева направо. Этот вид сравнения используется редко.
Следующие сценарии сравнивают две строки лексикографически:
#!/bin/bash VAR1="Linuxize" VAR2="Ubuntu" if]; then echo "${VAR1} is lexicographically greater then ${VAR2}." elif]; then echo "${VAR2} is lexicographically greater than ${VAR1}." else echo "Strings are equal" fi
Скрипт выведет следующее:
Ubuntu is lexicographically greater than Linuxize.
Вывод
Сравнение строк является одной из самых основных и часто используемых операций в сценариях Bash. Прочитав этот урок, вы должны хорошо понимать, как сравнивать строки в Bash. Вы также можете проверить наше руководство о конкатенации строк.
терминал bash
- Используйте оператор
Как сравнить два документа в MS Word 2007 или 2010
Узнайте, как быстро сравнить два документа в MS Word 2007 или 2010.
Как сравнить cpu, gpu и ssds перед покупкой
Узнайте, как сравнивать CPU, GPU и SSD перед покупкой. Мы поможем вам сделать правильный выбор.
Nio es8: как это сравнить с моделью Tesla X?
Недавно китайская компания NIO анонсировала полностью электрический внедорожник ES8. Это стоит меньше, чем Tesla Model X. Как это складывается?