- Използване на израза „Ако“.
- Използване на израза „If-Else“.
- Използване на израза „If-Elif-Else“.
- Използване на оператора „Ако“ за проверка на празна променлива
- Използване на израза „Ако“ с логически оператор
- Използване на вложените оператори „Ако“.
- Използване на израза „Ако“ за проверка на съществуването на файла
- Използване на израза „Ако“ за проверка на съществуването на директорията
- Използване на оператора „Ако“ с Regex
- Използване на оператора „Case“.
Използване на израза „Ако“.
Този пример показва простото използване на израза „if“ в Bash. Шест вида оператори за сравнение могат да се използват за сравняване на числовите стойности в Bash. Това са „-eq“ (равно), „-ne“ (не е равно), „-le“ (по-малко от равно), „-ge“ (по-голямо от равно), „-lt“ (по-малко от) и „ -gt” (по-голямо от). Употребите на „-lt“ и „-eq“ са показани в следния скрипт, независимо дали числото е по-малко от 99 или не е било проверено с помощта на оператора „-lt“. Числото е четно или нечетно и се проверява от оператора “-eq”.
#!/bin/bash
#Присвояване на числова стойност
( ( номер = петдесет ) )
#Проверете числовата стойност с помощта на израза 'if'
ако [ $номер - lt 99 ]
тогава
ехо „Номерът е валиден.“
бъда
#Проверете дали числото е четно или не
ако [ $ ( ( $номер % 2 ) ) -екв 0 ]
тогава
ехо 'Числото е четно.'
бъда
Изход :
След изпълнението на предишния скрипт се появява следният изход:
Използване на израза „If-Else“.
Използването на оператора „if-else“ е показано в следния скрипт. Стойност на низ се взема от потребителя и се проверява дали стойността е „СИНЯ“ или не с помощта на оператора „if-else“.
#!/bin/bash
#Вземете стойност на низ от потребителя
Прочети -стр „Въведете любимия си цвят:“ цвят
#Проверете стойността на низа, като използвате командата 'if-else'
ако [ ${цвят^^} == 'СИН' ]
тогава
ехо „Добре, наличен е син цвят.“
друго
ехо ' $цвят не е налично.'
бъда
Изход :
Следният изход се появява след изпълнение на предишния скрипт, ако „червено“ се приеме като вход:
Следният изход се появява след изпълнение на предишния скрипт, ако „синьо“ се приеме като вход:
Използване на израза „If-Elif-Else“.
Използването на израза „if-elif-else“ е показано в следния скрипт. Число се взема от потребителя и се проверява с различните стойности, докато се намери съвпадение. Ако се намери съвпадение, се отпечатва съответното съобщение. Ако не бъде намерено съвпадение, се отпечатва съобщението по подразбиране.
#!/bin/bash#Вземете стойността на id от потребителя
Прочети -стр „Въведете своя сериен номер:“ сериен
#Проверете входната стойност с помощта на израза 'if-elif-else'
ако [ $сериен == '4523' ]
тогава
ехо 'Вие сте избрани в група А.'
Елиф [ $сериен == '8723' ]
тогава
ехо 'Вие сте избрани в група Б.'
Елиф [ $сериен == '3412' ]
тогава
ехо 'Вие сте избрани в група C.'
друго
ехо „Не си избран“ .
бъда
Изход:
Следното извеждане се появява след изпълнение на скрипта със стойност 8723:
Следното извеждане се появява след изпълнение на скрипта със стойност 9078:
Използване на оператора „Ако“ за проверка на празна променлива
Методът за проверка дали дадена променлива е празна без използване на оператор „if“ е показан в следния скрипт. Опцията „-z“ се използва в израза „if“ за изпълнение на тази задача.
#!/bin/bash#Вземете стойността на id от потребителя
Прочети -стр „Въведете своя сериен номер:“ сериен
#Проверете дали променливата е празна или не
ако [ ! -С $сериен ]
тогава
#Проверете входната стойност с помощта на израза 'if-elif-else'
ако [ $сериен == '690' ]
тогава
ехо „Вие сте избрани в отбор-1.“
Елиф [ $сериен == '450' ]
тогава
ехо „Вие сте избрани в отбор 2.“
друго
ехо „Не си избран“ .
бъда
друго
ехо „Не е даден сериен номер.“
бъда
Изход :
Следното извеждане се появява след изпълнение на скрипта със стойност 690:
Следният изход се появява след изпълнение на скрипта, ако не е взета входна стойност:
Използване на израза „Ако“ с логически оператори
Три вида логически оператори могат да се използват в условния израз на Bash. Това са логическо ИЛИ (||), логическо И (&&) и логическо НЕ (!). Стойността на кода се взема от потребителя. Ако входната стойност не е празна, стойността се проверява с две кодови стойности, като се използва логическо ИЛИ. Ако стойността съвпада с който и да е код, се отпечатва съответното съобщение. Ако не бъде намерен съответстващ код, се отпечатва съобщението по подразбиране.
#!/bin/bash#Вземете кода на курса от потребителя
Прочети -стр „Въведете кода на курса:“ код
#Проверете дали променливата е празна или не
ако [ ! -С $код ]
тогава
#Проверете входната стойност с помощта на израза 'if-elif-else'
ако [ [ $код == 'CSE-106' || $код == 'CSE-108' ] ]
тогава
ехо 'CSE курс.'
Елиф [ [ $код == 'BBA-203' || $код == 'BBA-202' ] ]
тогава
ехо „Курс за BBA“.
друго
ехо „Невалиден код на курса.“
бъда
друго
ехо „Не е даден код на курса.“
бъда
Изход :
Следният изход се появява след изпълнение на скрипта с входна стойност „CSE-108“:
Следният изход се появява след изпълнение на скрипта с входната стойност на „BBA-56“:
Използване на вложените оператори „Ако“.
Когато условие „if“ се използва в друго условие „if“, то се нарича вложен израз „if“. Методът за използване на вложеното „if“ е показан в следния скрипт. Две стойности на оценка се вземат от потребителя. Ако входните стойности не са празни, първото условие „if“ проверява дали стойността на „$theory“ е по-голяма или равна на 60 или не. Ако първото условие „if“ върне „true“, второто условие „if“ проверява дали стойността на „$lab“ е по-голяма или равна на 50 или не. Ако второто условие „if“ също върне „true“, се отпечатва съобщение за успех. В противен случай се отпечатва съобщение за грешка.
#!/bin/bash#Вземете оценката на теорията
Прочети -стр „Въведете знака за теория:“ теория
#Вземете лабораторния знак
Прочети -стр „Въведете знака на лабораторията:“ лаборатория
#Проверете дали променливите са празни или не
ако [ [ ! -С $ теория && ! -С $лаборатория ] ]
тогава
#Проверете входните стойности с помощта на вложен оператор „if“.
ако [ $ теория -ge 60 ]
тогава
ако [ $лаборатория -ge петдесет ]
тогава
ехо „Минахте“.
друго
ехо — Провалихте се.
бъда
друго
ехо — Провалихте се.
бъда
друго
ехо „Оценката за теория или лаборатория е празна.“
бъда
Изход :
Следният изход се появява, ако и двете или една от входните стойности са празни:
Следният изход се появява, ако 78 се вземат като теоретични оценки и 45 се приемат като лабораторни оценки. Тук второто условие „ако“ връща „false“:
Следният изход се появява, ако 67 се вземат като теоретични оценки и 56 се вземат като лабораторни оценки. Тук и двете условия „if“ връщат „true“:
Следният резултат се появява, ако 50 се вземат като теоретични оценки и 80 се приемат като лабораторни оценки. Тук първото условие „ако“ връща „false“:
Използване на израза „Ако“ за проверка на съществуването на файла
Съществуването на файла може да се провери от 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“ е празен:
Следният изход се появява след изпълнение на скрипта, като се вземат „f1.txt“ и „test.txt“ като имена на файлове. Според изхода файлът „f1.txt“ не съществува в текущото местоположение и файлът „test.txt“ не е празен:
Използване на израза „Ако“ за проверка на съществуването на директорията
Съществуването на директорията може да бъде проверено от Bash скрипта по два начина като файла. Единият е използването на оператора „-d“ със скоби „[]“. Друг е използването на командата „test“ и оператора „-d“. Взема се име на директория и се проверява съществуването на директорията, като се използва условието „if“ с оператора „-d“. След това се взема друго име на директория и се проверява съществуването на файла с помощта на израза „if“ с командата „test“ и оператора „-d“.
#!/bin/bash#Вземете име на директория
Прочети -стр „Въведете име на директория:“ ти1
#Проверете дали директорията съществува или не, без да използвате `test`
ако [ -д $dir1 ]
тогава
ехо ' $dir1 директорията съществува.'
друго
ехо ' $dir1 директорията не съществува.'
бъда
#Добавяне на нов ред
ехо
#Вземете друго име на директория
Прочети -стр „Въведете друго име на директория:“ dir2
#Проверете дали файлът съществува или не с помощта на `test`
ако тест -д $dir2
тогава
ехо ' $dir2 директорията съществува.'
друго
ехо ' $dir2 директорията не съществува.'
бъда
Изход :
Следният изход се появява след изпълнение на скрипта с имената на директорията „temp“ и „files“. Според изхода и двете директории съществуват в текущото местоположение. След това се изпълнява командата 'ls', за да се провери съдържанието на директориите:
Следният изход се появява след изпълнение на скрипта с имената на директорията „testing“ и „new“. Според изхода и двете директории не съществуват в текущото местоположение. След това резултатът от командата 'ls' показва, че и двете директории не съществуват:
Използване на оператора „Ако“ с Regex
Следният скрипт показва метода за валидиране на входните данни с помощта на оператор „if“ с регулярния израз. Тук две входни стойности се вземат от потребителя и се съхраняват в променливите „$bookname“ и „$bookprice“. Условието „if“ се използва в скрипта, за да се провери дали променливата „$bookname“ съдържа всички буквени знаци, а „$bookprice“ съдържа число.
#!/bin/bash#Вземете името и цената на книгата от потребителя
ехо -н „Въведете името на книгата:“
Прочети име на книга
ехо -н „Въведете цената на книгата:“
Прочети книжна цена
#Проверете дали името на книгата съдържа само азбуката
ако ! [ [ ' $bookname ' =~ [ A-Za-z ] ] ] ; тогава
ехо „Името на книгата е невалидно.“
друго
ехо „Името на книгата е валидно.“
бъда
#Проверете, че цената на книгата съдържа само цифри
ако ! [ [ ' $bookprice ' =~ [ 0 - 9 ] ] ] ; тогава
ехо „Цената на книгата може да съдържа само цифри.“
друго
ехо „Цената на книгата е валидна.“
бъда
Изход :
Следният изход се появява след изпълнение на скрипта с входните стойности на „Bash програмиране“ като име на книгата и 78 като цена на книгата:
Следният изход се появява след изпълнение на скрипта с входни стойности 90 като име на книгата и „Bash“ като цена на книгата:
Използване на израза „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:
Следното извеждане се появява след изпълнение на скрипта със стойност 09:
Следното извеждане се появява след изпълнение на скрипта със стойност 14:
Заключение
Различни употреби на условна логика с помощта на операторите „if“ и „case“ са показани в 10-те примера на този урок. Концепцията за използване на условната логика в Bash ще бъде изчистена за новите потребители на Bash след прочитане на този урок.