Android

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

20 Bash Tricks in 5 Minutes - Spencer Krum

20 Bash Tricks in 5 Minutes - Spencer Krum

Оглавление:

Anonim

При написании сценариев 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"

      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

      String is not empty.

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

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

      #!/bin/bash VAR="Arch Linux" case $VAR in "Arch Linux") echo -n "Linuxize matched";; Fedora | CentOS) echo -n "Red Hat";; esac

      Linuxize matched.

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

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

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

      #!/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