Как да овладеете условната логика в Bash

Kak Da Ovladeete Uslovnata Logika V Bash



Използването на условна логика е много съществена част от всеки език за програмиране. Условната логика може да бъде имплементирана в Bash по различни начини за решаване на проблемите с програмирането. Методите за използване на условна логика в Bash чрез различните типове изрази „if“ и „case“ за сравняване на низови и числови стойности, проверка на съдържанието на променливата, проверка на съществуването на файл или директория и т.н. са показани в този урок .

Списък със съдържание:

  1. Използване на израза „Ако“.
  2. Използване на израза „If-Else“.
  3. Използване на израза „If-Elif-Else“.
  4. Използване на оператора „Ако“ за проверка на празна променлива
  5. Използване на израза „Ако“ с логически оператор
  6. Използване на вложените оператори „Ако“.
  7. Използване на израза „Ако“ за проверка на съществуването на файла
  8. Използване на израза „Ако“ за проверка на съществуването на директорията
  9. Използване на оператора „Ако“ с Regex
  10. Използване на оператора „Case“.

Използване на израза „Ако“.

Този пример показва простото използване на израза „if“ в Bash. Шест вида оператори за сравнение могат да се използват за сравняване на числовите стойности в Bash. Това са „-eq“ (равно), „-ne“ (не е равно), „-le“ (по-малко от равно), „-ge“ (по-голямо от равно), „-lt“ (по-малко от) и „ -gt” (по-голямо от). Употребите на „-lt“ и „-eq“ са показани в следния скрипт, независимо дали числото е по-малко от 99 или не е било проверено с помощта на оператора „-lt“. Числото е четно или нечетно и се проверява от оператора “-eq”.







#!/bin/bash

#Присвояване на числова стойност

( ( номер = петдесет ) )

#Проверете числовата стойност с помощта на израза 'if'

ако [ $номер - lt 99 ]

тогава

ехо „Номерът е валиден.“

бъда

#Проверете дали числото е четно или не

ако [ $ ( ( $номер % 2 ) ) -екв 0 ]

тогава

ехо 'Числото е четно.'

бъда

Изход :



След изпълнението на предишния скрипт се появява следният изход:



  p1





Отидете най-горе

Използване на израза „If-Else“.

Използването на оператора „if-else“ е показано в следния скрипт. Стойност на низ се взема от потребителя и се проверява дали стойността е „СИНЯ“ или не с помощта на оператора „if-else“.



#!/bin/bash

#Вземете стойност на низ от потребителя

Прочети -стр „Въведете любимия си цвят:“ цвят

#Проверете стойността на низа, като използвате командата 'if-else'

ако [ ${цвят^^} == 'СИН' ]

тогава

ехо „Добре, наличен е син цвят.“

друго

ехо ' $цвят не е налично.'

бъда

Изход :

Следният изход се появява след изпълнение на предишния скрипт, ако „червено“ се приеме като вход:

  p2-1

Следният изход се появява след изпълнение на предишния скрипт, ако „синьо“ се приеме като вход:

  p2-2

Отидете най-горе

Използване на израза „If-Elif-Else“.

Използването на израза „if-elif-else“ е показано в следния скрипт. Число се взема от потребителя и се проверява с различните стойности, докато се намери съвпадение. Ако се намери съвпадение, се отпечатва съответното съобщение. Ако не бъде намерено съвпадение, се отпечатва съобщението по подразбиране.

#!/bin/bash

#Вземете стойността на id от потребителя

Прочети -стр „Въведете своя сериен номер:“ сериен

#Проверете входната стойност с помощта на израза 'if-elif-else'

ако [ $сериен == '4523' ]

тогава

ехо 'Вие сте избрани в група А.'

Елиф [ $сериен == '8723' ]

тогава

ехо 'Вие сте избрани в група Б.'

Елиф [ $сериен == '3412' ]

тогава

ехо 'Вие сте избрани в група C.'

друго

ехо „Не си избран“ .

бъда

Изход:

Следното извеждане се появява след изпълнение на скрипта със стойност 8723:

  p3-1

Следното извеждане се появява след изпълнение на скрипта със стойност 9078:

  р3-2

Отидете най-горе

Използване на оператора „Ако“ за проверка на празна променлива

Методът за проверка дали дадена променлива е празна без използване на оператор „if“ е показан в следния скрипт. Опцията „-z“ се използва в израза „if“ за изпълнение на тази задача.

#!/bin/bash

#Вземете стойността на id от потребителя

Прочети -стр „Въведете своя сериен номер:“ сериен

#Проверете дали променливата е празна или не

ако [ ! $сериен ]

тогава

#Проверете входната стойност с помощта на израза 'if-elif-else'

ако [ $сериен == '690' ]

тогава

ехо „Вие сте избрани в отбор-1.“

Елиф [ $сериен == '450' ]

тогава

ехо „Вие сте избрани в отбор 2.“

друго

ехо „Не си избран“ .

бъда

друго

ехо „Не е даден сериен номер.“

бъда

Изход :

Следното извеждане се появява след изпълнение на скрипта със стойност 690:

  p4-1

Следният изход се появява след изпълнение на скрипта, ако не е взета входна стойност:

  p4-2

Отидете най-горе

Използване на израза „Ако“ с логически оператори

Три вида логически оператори могат да се използват в условния израз на Bash. Това са логическо ИЛИ (||), логическо И (&&) и логическо НЕ (!). Стойността на кода се взема от потребителя. Ако входната стойност не е празна, стойността се проверява с две кодови стойности, като се използва логическо ИЛИ. Ако стойността съвпада с който и да е код, се отпечатва съответното съобщение. Ако не бъде намерен съответстващ код, се отпечатва съобщението по подразбиране.

#!/bin/bash

#Вземете кода на курса от потребителя

Прочети -стр „Въведете кода на курса:“ код

#Проверете дали променливата е празна или не

ако [ ! $код ]

тогава

#Проверете входната стойност с помощта на израза 'if-elif-else'

ако [ [ $код == 'CSE-106' || $код == 'CSE-108' ] ]

тогава

ехо 'CSE курс.'

Елиф [ [ $код == 'BBA-203' || $код == 'BBA-202' ] ]

тогава

ехо „Курс за BBA“.

друго

ехо „Невалиден код на курса.“

бъда

друго

ехо „Не е даден код на курса.“

бъда

Изход :

Следният изход се появява след изпълнение на скрипта с входна стойност „CSE-108“:

  p5-1

Следният изход се появява след изпълнение на скрипта с входната стойност на „BBA-56“:

  p5-2

Отидете най-горе

Използване на вложените оператори „Ако“.

Когато условие „if“ се използва в друго условие „if“, то се нарича вложен израз „if“. Методът за използване на вложеното „if“ е показан в следния скрипт. Две стойности на оценка се вземат от потребителя. Ако входните стойности не са празни, първото условие „if“ проверява дали стойността на „$theory“ е по-голяма или равна на 60 или не. Ако първото условие „if“ върне „true“, второто условие „if“ проверява дали стойността на „$lab“ е по-голяма или равна на 50 или не. Ако второто условие „if“ също върне „true“, се отпечатва съобщение за успех. В противен случай се отпечатва съобщение за грешка.

#!/bin/bash

#Вземете оценката на теорията

Прочети -стр „Въведете знака за теория:“ теория

#Вземете лабораторния знак

Прочети -стр „Въведете знака на лабораторията:“ лаборатория

#Проверете дали променливите са празни или не

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

тогава

#Проверете входните стойности с помощта на вложен оператор „if“.

ако [ $ теория -ge 60 ]

тогава

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

тогава

ехо „Минахте“.

друго

ехо — Провалихте се.

бъда

друго

ехо — Провалихте се.

бъда

друго

ехо „Оценката за теория или лаборатория е празна.“

бъда

Изход :

Следният изход се появява, ако и двете или една от входните стойности са празни:

  p6-1

Следният изход се появява, ако 78 се вземат като теоретични оценки и 45 се приемат като лабораторни оценки. Тук второто условие „ако“ връща „false“:

  p6-2

Следният изход се появява, ако 67 се вземат като теоретични оценки и 56 се вземат като лабораторни оценки. Тук и двете условия „if“ връщат „true“:

  p6-3

Следният резултат се появява, ако 50 се вземат като теоретични оценки и 80 се приемат като лабораторни оценки. Тук първото условие „ако“ връща „false“:

  p6-4

Отидете най-горе

Използване на израза „Ако“ за проверка на съществуването на файла

Съществуването на файла може да се провери от bash скрипта по два начина. Единият е използването на оператора „-f“ със скоби „[]“. Друг е използването на командата „test“ и оператора „-f“. Взема се име на файл и се проверява съществуването на файла, като се използва условието „if“ с оператора „-f“. След това се взема друго име на файл и се проверява съществуването на файла с помощта на израза „if“ с командата „test“ и оператора „-f“.

#!/bin/bash

#Вземете името на файла

Прочети -стр „Въведете име на файл:“ fn1

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

ако [ -f $fn1 ]

тогава

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

друго

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

бъда

#Добавяне на нов ред

ехо

#Вземете друго име на файл

Прочети -стр „Въведете друго име на файл:“ fn2

#Проверете дали файлът съществува или не с помощта на `test`

ако тест -f $fn2 ; тогава

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

#Проверете дали файлът е празен или не, като използвате `test`

ако тест $fn2 ; тогава

ехо ' $fn2 файлът е празен.'

друго

ехо ' $fn2 файлът не е празен.'

бъда

друго

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

бъда

Изход :

Следният изход се появява след изпълнение на скрипта, като се вземат „test.txt“ и „testing.txt“ като имена на файлове. Според изхода и двата файла съществуват в текущото местоположение и файлът „testing.txt“ е празен:

  p7-1

Следният изход се появява след изпълнение на скрипта, като се вземат „f1.txt“ и „test.txt“ като имена на файлове. Според изхода файлът „f1.txt“ не съществува в текущото местоположение и файлът „test.txt“ не е празен:

  p7-2

Отидете най-горе

Използване на израза „Ако“ за проверка на съществуването на директорията

Съществуването на директорията може да бъде проверено от Bash скрипта по два начина като файла. Единият е използването на оператора „-d“ със скоби „[]“. Друг е използването на командата „test“ и оператора „-d“. Взема се име на директория и се проверява съществуването на директорията, като се използва условието „if“ с оператора „-d“. След това се взема друго име на директория и се проверява съществуването на файла с помощта на израза „if“ с командата „test“ и оператора „-d“.

#!/bin/bash

#Вземете име на директория

Прочети -стр „Въведете име на директория:“ ти1

#Проверете дали директорията съществува или не, без да използвате `test`

ако [ $dir1 ]

тогава

ехо ' $dir1 директорията съществува.'

друго

ехо ' $dir1 директорията не съществува.'

бъда

#Добавяне на нов ред

ехо

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

Прочети -стр „Въведете друго име на директория:“ dir2

#Проверете дали файлът съществува или не с помощта на `test`

ако тест $dir2

тогава

ехо ' $dir2 директорията съществува.'

друго

ехо ' $dir2 директорията не съществува.'

бъда

Изход :

Следният изход се появява след изпълнение на скрипта с имената на директорията „temp“ и „files“. Според изхода и двете директории съществуват в текущото местоположение. След това се изпълнява командата 'ls', за да се провери съдържанието на директориите:

  p8-1

Следният изход се появява след изпълнение на скрипта с имената на директорията „testing“ и „new“. Според изхода и двете директории не съществуват в текущото местоположение. След това резултатът от командата 'ls' показва, че и двете директории не съществуват:

  p8-2

Отидете най-горе

Използване на оператора „Ако“ с Regex

Следният скрипт показва метода за валидиране на входните данни с помощта на оператор „if“ с регулярния израз. Тук две входни стойности се вземат от потребителя и се съхраняват в променливите „$bookname“ и „$bookprice“. Условието „if“ се използва в скрипта, за да се провери дали променливата „$bookname“ съдържа всички буквени знаци, а „$bookprice“ съдържа число.

#!/bin/bash

#Вземете името и цената на книгата от потребителя

ехо „Въведете името на книгата:“

Прочети име на книга

ехо „Въведете цената на книгата:“

Прочети книжна цена

#Проверете дали името на книгата съдържа само азбуката

ако ! [ [ ' $bookname ' =~ [ A-Za-z ] ] ] ; тогава

ехо „Името на книгата е невалидно.“

друго

ехо „Името на книгата е валидно.“

бъда

#Проверете, че цената на книгата съдържа само цифри

ако ! [ [ ' $bookprice ' =~ [ 0 - 9 ] ] ] ; тогава

ехо „Цената на книгата може да съдържа само цифри.“

друго

ехо „Цената на книгата е валидна.“

бъда

Изход :

Следният изход се появява след изпълнение на скрипта с входните стойности на „Bash програмиране“ като име на книгата и 78 като цена на книгата:

  p9-1

Следният изход се появява след изпълнение на скрипта с входни стойности 90 като име на книгата и „Bash“ като цена на книгата:

  p9-2

Отидете най-горе

Използване на израза „Case“.

Операторът „case“ е алтернативата на израза „if-elif-else“, но всички задачи на оператора „if-elif-else“ не могат да бъдат изпълнени с помощта на оператора „case“. Лесното използване на оператора „case“ е показано в следния скрипт. Числова стойност се взема от потребителя като стойност за текущия месец. След това съответният месец се отпечатва, ако се намери съвпадаща стойност в израза „case“. В противен случай се отпечатва съобщението по подразбиране.

#!/bin/bash

#Вземете стойността на текущия месец в число

Прочети -стр „Въведете днешния месец с число:“ b_месец

#Отпечатайте текста, преди да отпечатате името на месеца

ехо 'Името на текущия месец е '

#Намерете и отпечатайте съответстващото име на месеца въз основа на въведеното

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

1 | 01 ) ехо 'Януари.' ;;

2 | 02 ) ехо 'Февруари.' ;;

3 | 03 ) ехо 'Март.' ;;

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

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

6 | 06 ) ехо 'Юни.' ;;

7 | 07 ) ехо 'Юли.' ;;

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

9 | 09 ) ехо 'Септември.' ;;

10 ) ехо 'Октомври.' ;;

единадесет ) ехо 'ноември.' ;;

12 ) ехо 'Декември.' ;;

* ) ехо 'не е намерено.' ;;

esac

Изход :

Следното извеждане се появява след изпълнение на скрипта със стойност 6:

  p10-1

Следното извеждане се появява след изпълнение на скрипта със стойност 09:


  стр. 10-2

Следното извеждане се появява след изпълнение на скрипта със стойност 14:

  стр. 10-3

Отидете най-горе

Заключение

Различни употреби на условна логика с помощта на операторите „if“ и „case“ са показани в 10-те примера на този урок. Концепцията за използване на условната логика в Bash ще бъде изчистена за новите потребители на Bash след прочитане на този урок.