Логический оператор используется для определения логических выражений в любом языке программирования. Обычно в Bash используются три типа логических операторов: И, ИЛИ и НЕ. Операторы И и ИЛИ используются между двумя и более условиями. Оператор И возвращает true, если все условия возвращаются true. В противном случае возвращается false. Символ "&&" используется для определения логического выражения И в условии "if". Использование оператора AND в Bash показано в этом учебном пособии.
Синтаксис
Условие 1 И Условие 2 И ... Условие N
Логический оператор И может использоваться для проверки двух или более условий. Он возвращает истину, если все условия истинны.
Различные варианты использования оператора И
В этой части учебного пособия показаны способы использования оператора логического И в сценарии Bash.
Пример 1: Использование логического оператора И между двумя условиями
Создайте Bash-файл со следующим сценарием, который принимает общее количество единиц товара и сумму продаж. Затем рассчитайте сумму бонуса на основе возвращаемого значения условия "если". В скрипте используются три условия "если" с логическим оператором AND и два условия. Если ни одно из условий "если" не возвращает истину, то размер бонуса равен 0.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | #!/bin/bash #Прием двух входных от пользователя echo -n "Введите количество торговых позиций:" read number echo -n "Введите сумму продажи:" read amount #Расчет премии на основе результата логического И if [[ $number -ge 15 && $amount -ge 50000 ]]; then ((bonus=$amount*15/100 | bc -l)) elif [[ $number -ge 10 && $amount -ge 25000 ]]; then ((bonus=$amount*10/100 | bc -l)) elif [[ $number -ge 5 && $amount -ge 10000 ]]; then ((bonus=$amount*5/100 | bc -l)) else ((bonus=0)) fi #Вывод значений входных величин с рассчитанной премией echo "Количество элементов продаж: $number" echo "Количество продаж: $amount" echo "Сумма бонуса: $bonus" |
Пример 2: Использование логического И между тремя условиями
Создайте Bash-файл со следующим сценарием, который принимает оценки за MCQ, описательные и лабораторные работы студента. Далее с помощью оператора логического И проверяются три условия, чтобы вывести, сдал студент экзамен или нет. Если оценка за MCQ больше или равна 30, оценка за описательную часть больше или равна 25, а оценка за лабораторную работу больше или равна 25. Тогда выводится сообщение "Вы сдали экзамен". В противном случае выводится сообщение "Вы не сдали экзамен".
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | #!/bin/bash #Принять от пользователя три входных значения echo -n "Введите оценки MCQ:" read m1 echo -n "Введите описательные знаки:" read m2 echo -n "Введите лабораторные метки:" read m3 #Вывод сообщения на основе вывода оператора И if [[ $m1 -ge 30 && $m2 -ge 25 && $m3 -ge 35 ]]; then echo "Вы сдали экзамен". else echo "Вы не сдали экзамен". fi |
После выполнения сценария для значений MCQ=35, descriptive=41 и lab=20 появляется следующий результат.
После выполнения сценария для значений MCQ=33, descriptive=45 и lab=38 появляется следующий результат.
Пример 3: Использование логического И с помощью вложенных выражений "Если"
Создайте Bash-файл со следующим сценарием, который принимает от пользователя идентификатор кандидата, название отдела и должность. Далее значения должности и отдела проверяются с помощью оператора логического И. Если этот оператор "if" возвращает значение true, то проверяется следующий оператор "if". В зависимости от возвращаемых значений вложенных операторов "if" выводится выходное сообщение.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | #!/bin/bash #Прием входных значений от пользователя echo -n "Введите идентификатор заявителя:" read id echo -n "Введите название отдела:" read dept echo -n "Введите название должности:" read post #Использование оператора И во вложенных if if [[ $post == "Manager" && $dept == "HR" ]]; then if [ $id == "5001" ]; then echo "Вы выбраны в отдел $dept" else echo "Вы не выбраны". fi elif [[ $post == "Accountant" && $dept == "Sales" ]]; then if [ $id == "5620" ]; then echo "Вы выбраны в отдел $dept". else echo "Вы не выбраны". fi else echo "Отдел или должность недействительны". fi |
После выполнения сценария со значениями ID="5002", department="HR" и post="Manager" появляется следующий результат.
После выполнения сценария со значениями ID="5620", department="Sales" и post="Accountant" появляется следующий результат.
Заключение
В этом учебном пособии на многочисленных примерах показано простое использование логического оператора AND в сценариях Bash, что поможет начинающим программистам Bash.