Как освоить условную логику в Bash

Kak Osvoit Uslovnuu Logiku V Bash



Использование условной логики является очень важной частью любого языка программирования. Условная логика может быть реализована в Bash различными способами для решения задач программирования. В этом руководстве показаны методы использования условной логики в Bash с помощью различных типов операторов «if» и «case» для сравнения строковых и числовых значений, проверки содержимого переменной, проверки существования файла или каталога и т. д. .

Список контента:

  1. Использование оператора «Если»
  2. Использование оператора «If-Else»
  3. Использование оператора «If-Elif-Else»
  4. Использование оператора «If» для проверки пустой переменной
  5. Использование оператора «If» с логическим оператором
  6. Использование вложенных операторов «If»
  7. Использование оператора «If» для проверки существования файла
  8. Использование оператора «If» для проверки существования каталога
  9. Использование оператора «If» с регулярным выражением
  10. Использование оператора «Case»

Использование оператора «Если»

В этом примере показано простое использование оператора if в Bash. Для сравнения числовых значений в Bash можно использовать шесть типов операторов сравнения. Это «-eq» (равно), «-ne» (не равно), «-le» (меньше чем равно), «-ge» (больше чем равно), «-lt» (меньше чем) и « -gt» (больше чем). Использование «-lt» и «-eq» показано в следующем сценарии, независимо от того, меньше ли число 99 или оно не было проверено с помощью оператора «-lt». Число четное или нечетное и проверяется оператором «-eq».







#!/бин/баш

#Присваиваем числовое значение

( ( число '=' пятьдесят ) )

#Проверьте числовое значение, используя оператор if

если [ $номер -lt 99 ]

затем

эхо «Номер действителен».

быть

#Проверяем, четное число или нет

если [ $ ( ( $номер % 2 ) ) -экв 0 ]

затем

эхо «Число четное».

быть

Выход :



После выполнения предыдущего скрипта появится следующий вывод:



  п1





Перейти наверх

Использование оператора «If-Else»

Использование оператора if-else показано в следующем сценарии. Строковое значение берется у пользователя и проверяется, является ли оно «СИНИМ» или нет, с помощью оператора «if-else».



#!/бин/баш

#Возьмем строковое значение от пользователя

читать -п «Введите свой любимый цвет:» цвет

#Проверьте значение строки с помощью оператора if-else

если [ ${цвет^^} == 'СИНИЙ' ]

затем

эхо «Хорошо, синий цвет доступен».

еще

эхо ' $цвет не доступен.'

быть

Выход :

Следующий вывод появляется после выполнения предыдущего сценария, если в качестве входных данных выбран «красный»:

  п2-1

Следующий вывод появляется после выполнения предыдущего скрипта, если в качестве входных данных выбран «синий»:

  п2-2

Перейти наверх

Использование оператора «If-Elif-Else»

Использование оператора if-elif-else показано в следующем сценарии. Число берется у пользователя и проверяется с различными значениями, пока не будет найдено какое-либо совпадение. Если какое-либо совпадение обнаружено, выводится соответствующее сообщение. Если совпадение не найдено, выводится сообщение по умолчанию.

#!/бин/баш

#Возьмем значение идентификатора пользователя

читать -п «Введите свой серийный номер:» сериал

#Проверьте введенное значение с помощью оператора if-elif-else

если [ $серийный == '4523' ]

затем

эхо «Вы выбраны в группу А».

Элиф [ $серийный == '8723' ]

затем

эхо «Вы выбраны в группу Б».

Элиф [ $серийный == '3412' ]

затем

эхо «Вы выбраны в группу С».

еще

эхо «Вы не выбраны» .

быть

Выход:

Следующий вывод появляется после выполнения сценария со значением 8723:

  п3-1

Следующий вывод появляется после выполнения сценария со значением 9078:

  п3-2

Перейти наверх

Использование оператора «If» для проверки пустой переменной

Метод проверки того, пуста ли переменная без использования оператора «if», показан в следующем скрипте. Для выполнения этой задачи в операторе if используется опция «-z».

#!/бин/баш

#Возьмем значение идентификатора пользователя

читать -п «Введите свой серийный номер:» сериал

#Проверяем, пуста ли переменная или нет

если [ ! $серийный ]

затем

#Проверьте введенное значение с помощью оператора if-elif-else

если [ $серийный == '690' ]

затем

эхо «Вы выбраны в команду-1».

Элиф [ $серийный == '450' ]

затем

эхо «Вы выбраны в команду-2».

еще

эхо «Вы не выбраны» .

быть

еще

эхо «Серийный номер не указан».

быть

Выход :

Следующий вывод появляется после выполнения скрипта со значением 690:

  п4-1

Следующий вывод появляется после выполнения сценария, если не введено никакое входное значение:

  п4-2

Перейти наверх

Использование оператора «If» с логическими операторами

В условном операторе Bash можно использовать три типа логических операторов. Это логическое ИЛИ (||), логическое И (&&) и логическое НЕ (!). Значение кода берется у пользователя. Если входное значение не пустое, оно проверяется с помощью двух значений кода с использованием логического ИЛИ. Если значение совпадает с каким-либо кодом, выводится соответствующее сообщение. Если соответствующий код не найден, печатается сообщение по умолчанию.

#!/бин/баш

#Возьмем код курса у пользователя

читать -п «Введите код курса:» код

#Проверяем, пуста ли переменная или нет

если [ ! $код ]

затем

#Проверьте введенное значение с помощью оператора if-elif-else

если [ [ $код == 'CSE-106' || $код == 'CSE-108' ] ]

затем

эхо «Курс ЕГЭ».

Элиф [ [ $код == 'ББА-203' || $код == 'ББА-202' ] ]

затем

эхо «Курс BBA».

еще

эхо «Неверный код курса».

быть

еще

эхо «Код курса не указан».

быть

Выход :

Следующий вывод появляется после выполнения сценария с входным значением «CSE-108»:

  п5-1

Следующий вывод появляется после выполнения сценария с входным значением «BBA-56»:

  п5-2

Перейти наверх

Использование вложенных операторов «If»

Когда условие «if» используется внутри другого условия «if», оно называется вложенным оператором «if». Метод использования вложенного «if» показан в следующем скрипте. У пользователя берутся два значения оценки. Если входные значения не пусты, первое условие «if» проверяет, превышает ли значение «$theory» 60 или нет. Если первое условие «if» возвращает «истина», второе условие «if» проверяет, превышает ли значение «$lab» 50 или нет. Если второе условие «if» также возвращает «истину», выводится сообщение об успехе. В противном случае печатается сообщение об ошибке.

#!/бин/баш

#Сними оценку теории

читать -п «Введите отметку теории:» теория

#Возьми лабораторную отметку

читать -п «Введите отметку лаборатории:» лаборатория

#Проверяем, пусты ли переменные или нет

если [ [ ! $теория && ! $лаборатория ] ]

затем

#Проверьте входные значения с помощью вложенного оператора if

если [ $теория -ге 60 ]

затем

если [ $лаборатория -ге пятьдесят ]

затем

эхо «Вы прошли».

еще

эхо «Вы потерпели неудачу».

быть

еще

эхо «Вы потерпели неудачу».

быть

еще

эхо «Теория или лабораторная оценка пуста».

быть

Выход :

Следующий вывод появляется, если оба или одно из входных значений пусты:

  п6-1

Следующий вывод появляется, если 78 принимается за теорию, а 45 — за лабораторную работу. Здесь второе условие «if» возвращает «false»:

  п6-2

Следующий вывод появляется, если 67 принимается как оценка по теории, а 56 — как оценка по лабораторной работе. Здесь оба условия «if» возвращают «истину»:

  стр6-3

Следующий вывод появляется, если 50 взято за теоретические оценки, а 80 — за лабораторные. Здесь первое условие «if» возвращает «false»:

  стр6-4

Перейти наверх

Использование оператора «If» для проверки существования файла

Существование файла можно проверить с помощью bash-скрипта двумя способами. Один из них использует оператор «-f» со скобками «[]». Другой вариант — использование команды «test» и оператора «-f». Берется имя файла и проверяется существование файла с использованием условия «if» с оператором «-f». Затем берется другое имя файла и проверяется существование файла с помощью оператора «if» с командой «test» и оператором «-f».

#!/бин/баш

#Возьмем имя файла

читать -п «Введите имя файла:» фн1

#Проверяем, существует файл или нет, не используя `test`

если [ $fn1 ]

затем

эхо ' $fn1 Файл существует.'

еще

эхо ' $fn1 файл не существует.'

быть

#Добавить новую строку

эхо

#Возьмем другое имя файла

читать -п «Введите другое имя файла:» фн2

#Проверьте, существует ли файл или нет, используя `test`

если тест $fn2 ; затем

эхо ' $fn2 Файл существует.'

#Проверьте, пуст ли файл или нет, используя `test`

если тест $fn2 ; затем

эхо ' $fn2 файл пуст».

еще

эхо ' $fn2 файл не пуст».

быть

еще

эхо ' $fn2 файл не существует.'

быть

Выход :

Следующий вывод появляется после выполнения сценария с использованием в качестве имен файлов «test.txt» и «test.txt». Согласно выводам, оба файла существуют в текущем местоположении, а файл «testing.txt» пуст:

  п7-1

Следующий вывод появляется после выполнения сценария с использованием в качестве имен файлов «f1.txt» и «test.txt». Согласно выводам, файл «f1.txt» не существует в текущем местоположении и файл «test.txt» не пуст:

  п7-2

Перейти наверх

Использование оператора «If» для проверки существования каталога

Существование каталога можно проверить с помощью сценария Bash двумя способами, как и файл. Один из них использует оператор «-d» со скобками «[]». Другой вариант — использование команды «test» и оператора «-d». Берется имя каталога и проверяется существование каталога с использованием условия «if» с оператором «-d». Затем берется другое имя каталога и проверяется существование файла с помощью оператора «if» с командой «test» и оператором «-d».

#!/бин/баш

#берём имя каталога

читать -п «Введите имя каталога:» ты1

#Проверяем, существует каталог или нет, не используя `test`

если [ $дир1 ]

затем

эхо ' $дир1 каталог существует».

еще

эхо ' $дир1 каталог не существует».

быть

#Добавить новую строку

эхо

#Возьмем другое имя каталога

читать -п «Введите другое имя каталога:» реж.2

#Проверьте, существует ли файл или нет, используя `test`

если тест $дир2

затем

эхо ' $дир2 каталог существует».

еще

эхо ' $дир2 каталог не существует».

быть

Выход :

Следующий вывод появляется после выполнения сценария с именами каталогов «temp» и «files». Согласно выводу, оба каталога существуют в текущем местоположении. Затем выполняется команда «ls» для проверки содержимого каталогов:

  п8-1

Следующий вывод появляется после выполнения сценария с именами каталогов «тестирование» и «новый». Согласно выводу, оба каталога не существуют в текущем местоположении. Затем вывод команды «ls» показывает, что оба каталога не существуют:

  п8-2

Перейти наверх

Использование оператора «If» с регулярным выражением

В следующем скрипте показан метод проверки входных данных с использованием оператора if с регулярным выражением. Здесь два входных значения берутся у пользователя и сохраняются в переменных «$bookname» и «$bookprice». Условие «if» используется в скрипте для проверки того, что переменная «$bookname» содержит все буквенные символы, а переменная «$bookprice» содержит число.

#!/бин/баш

#Возьмем название и цену книги у пользователя

эхо «Введите название книги:»

читать название книги

эхо «Введите цену книги:»

читать цена книги

#Проверьте, что название книги содержит только алфавит

если ! [ [ ' $bookname ' =~ [ А-За-з ] ] ] ; затем

эхо «Название книги недействительно».

еще

эхо «Название книги действительно».

быть

#Проверьте, что цена книги содержит только цифры

если ! [ [ ' $bookprice ' =~ [ 0 - 9 ] ] ] ; затем

эхо «Цена книги может содержать только цифры».

еще

эхо «Цена книги действительна».

быть

Выход :

Следующий вывод появляется после выполнения сценария с входными значениями «Bash Programming» в качестве названия книги и 78 в качестве цены книги:

  р9-1

Следующий вывод появляется после выполнения сценария с входными значениями 90 в качестве названия книги и «Bash» в качестве цены книги:

  п9-2

Перейти наверх

Использование оператора «Case»

Оператор «case» является альтернативой оператору «if-elif-else», но все задачи оператора «if-elif-else» не могут быть выполнены с помощью оператора «case». Простое использование оператора «case» показано в следующем сценарии. Числовое значение берется у пользователя как значение текущего месяца. Затем соответствующий месяц печатается, если в операторе «case» обнаружено какое-либо соответствующее значение. В противном случае печатается сообщение по умолчанию.

#!/бин/баш

#Возьмем значение текущего месяца в цифрах

читать -п «Введите текущий месяц в цифрах:» б_месяц

#Распечатываем текст перед печатью названия месяца

эхо 'Название текущего месяца'

#Находим и распечатываем соответствующее название месяца на основе введенных данных

случай $b_месяц в

1 | 01 ) эхо «Январь». ;;

2 | 02 ) эхо «Февраль». ;;

3 | 03 ) эхо 'Маршировать.' ;;

4 | 04 ) эхо 'Апрель.' ;;

5 | 05 ) эхо 'Может.' ;;

6 | 06 ) эхо 'Июнь.' ;;

7 | 07 ) эхо 'Июль.' ;;

8 | 08 ) эхо 'Август.' ;;

9 | 09 ) эхо 'Сентябрь.' ;;

10 ) эхо «Октябрь». ;;

одиннадцать ) эхо «Ноябрь». ;;

12 ) эхо 'Декабрь.' ;;

* ) эхо 'не найдено.' ;;

выходной

Выход :

Следующий вывод появляется после выполнения скрипта со значением 6:

  п10-1

Следующий вывод появляется после выполнения сценария со значением 09:


  п10-2

Следующий вывод появляется после выполнения скрипта со значением 14:

  стр10-3

Перейти наверх

Заключение

Различные варианты использования условной логики с использованием операторов «if» и «case» показаны в 10 примерах этого руководства. Концепция использования условной логики в Bash будет понятна новым пользователям Bash после прочтения этого руководства.