Bash содержит различные типы логических операторов, упрощающих работу скрипта. Логические операторы типа ИЛИ выполняют булеву операцию ИЛИ (тип выражения, оценивающий, является ли значение истинным или ложным). Этот логический оператор ИЛИ в Bash обозначается как "||" и объединяет два или более составных условия в составное условие. Начинающему пользователю полезно понимать логические операторы ИЛИ, чтобы легко создавать сложные сценарии. В этом руководстве мы расскажем все об операторе ИЛИ в Bash.
Оператор ИЛИ в Bash
Оператор ИЛИ принимает два операнда (логические выражения) и возвращает true, если любой из операндов истинен; в противном случае возвращается false. В сценариях Bash оператор ИЛИ используется через двойные трубы. Ниже приведена таблица истинности логического оператора ИЛИ в Bash, которая поможет вам лучше понять суть:
Операнд 1 | Операнд 2 | Операнд 1 || Операнд 2 (Булево условие) |
ИСТИНА | ЛОЖЬ | ИСТИНА |
ЛОЖЬ | ИСТИНА | ИСТИНА |
ИСТИНА | ИСТИНА | ИСТИНА |
ЛОЖЬ | ЛОЖЬ | ЛОЖЬ |
Рассмотрим пример, когда мы создаем скрипт, выдающий определенный результат после ввода конкретного числа. Например, для поступления в колледж необходимо, чтобы абитуриенту было 18 лет и более. Мы ставим два условия - первое, если возраст кандидата равен 18 годам, и второе, если его возраст больше 18 лет. Если одно из условий истинно, предлагается продолжить работу. Если же оба условия ложны, то выдается сообщение о том, что возраст недействителен.
1 2 3 4 5 6 7 8 9 10 11 12 | #! /bin/bash echo "Введите возраст" read age if [ "$age" = 18 ] || [ "$age" -gt 18 ] then echo "следующий шаг" else echo "возраст не валиден" fi |
Вывод:
В предыдущем примере видно, что мы использовали логический оператор ИЛИ в нашем скрипте, используя трубы с квадратными скобками. В Bash оператор ИЛИ также можно использовать с помощью двойных квадратных скобок. Синтаксис выглядит следующим образом:
1 | [[ операнд _1 ||операнд_2 || операнд_3 ... || операнд_n ]] |
1 2 3 4 5 6 7 8 9 10 11 12 | #! /bin/bash echo "Введите возраст" read age if [[ "$age" = 18 || "$age" -gt 18 ]] then echo "следующий шаг" else echo "возраст не валиден" fi |
Используя оба вида синтаксиса, можно видеть, что на выходе получается один и тот же результат. Таким образом, можно использовать любой из двух методов в зависимости от удобства.
Логический оператор -O
Для оператора ИЛИ можно также использовать флаг -o вместо двойной трубы. Этот флаг также работает аналогично и возвращает истинное утверждение, если любое из условий истинно. В противном случае выводится ложное утверждение. Его синтаксис выглядит следующим образом:
1 | [операнд _1 -о операнд_2 -о операнд_3... -о операнд_n] |
В следующем примере с помощью оператора ИЛИ мы узнаем, какой символ является гласным, а какой - согласным:
Таким образом, с помощью флага -o можно также использовать оператор ИЛИ.
Заключение
Это все о логическом операторе ИЛИ, который можно использовать в сценариях Bash. Многие пользователи Bash считают, что логический оператор ИЛИи логический оператор -o отличаются друг от друга, но это не так. Эти два оператора одинаковы, разница лишь в том, что существует особый способ их использования, как показано в приведенных примерах. Использование обоих способов и выполнение их в терминале дает одинаковый результат.