В тази тема ще разберем как да използваме ако изявления в Bash скриптове, за да изпълним нашите автоматизирани задачи.
Баш, ако изявленията са полезни. Те се използват за изпълнение на условни задачи в последователния поток на изпълнение на изрази. Изявленията If обикновено ни позволяват да вземаме решения в нашите Bash скриптове. Те ни помагат да решим дали да изпълним или не част от кодове въз основа на условието, което можем да зададем.
Основни оператори if
Основен оператор if командва, че ако определено условие е вярно, тогава се изпълнява само даден набор от действия. Ако не е вярно, тогава не изпълнявайте тези действия. Изявлението If се основава на следния формат:
Синтаксис
if [ expression ]; then statements fi
Изявлението между тогава и бъда (Ако е обратно) ще се изпълни само ако изразът (между квадратните скоби) е верен.
Забележка:Спазвайте използваните интервали в първия ред и точка и запетая в края на първия ред; и двете са задължителни за използване.Ако условно изявлениезавършва съсбъда.
- За използване на множество условия с оператор AND:
if [ expression_1 ] && [ expression_2 ]; then statements fi
- За използване на множество условия с оператор OR:
if [ expression_1 ] || [ expression_2 ]; then statements fi
- За съставни изрази с оператори И & ИЛИ можем да използваме следния синтаксис:
if [ expression_1 && expression_2 || expression_3 ]; then statements fi
Следват някои примери, демонстриращи използването на израза if:
Пример 1
В този пример вземете потребителско въвеждане на произволно число и проверете дали стойността е по-голяма от 125.
#!/bin/bash read -p ' Enter number : ' number if [ $number -gt 125 ] then echo 'Value is greater than 125' fi
Изход
Ако въведем числото 159, изходът ще изглежда така:
Пример 2
В този пример ние демонстрираме използването на оператор if с прост сценарий за сравняване на два низа:
#!/bin/bash # if condition is true if [ 'myfile' == 'myfile' ]; then echo 'true condition' fi # if condition is false if [ 'myfile' == 'yourfile' ]; then echo 'false condition' fi
Изход
Пример 3
В този пример демонстрираме как да сравняваме числа с помощта на оператора if:
#!/bin/bash #if condition (greater than) is true if [ 10 -gt 3 ]; then echo '10 is greater than 3.' fi #if condition (greater than) is false if [ 3 -gt 10 ]; then echo '3 is not greater than 10.' fi #if condition (lesser than) is true if [ 3 -lt 10 ]; then echo '3 is less than 10.' fi #if condition (lesser than) is false if [ 10 -lt 3 ]; then echo '10 is not less than 3.' fi #if condition (equal to) is true if [ 10 -eq 10 ]; then echo '10 is equal to 10.' fi #if condition (equal to) is false if [ 10 -eq 9 ]; then echo '10 is not equal to 9' fi
Изход
Пример 4
В този пример ще дефинираме как да използваме оператора И, за да включим множество условия в израза if:
#!/bin/bash # TRUE && TRUE if [ 8 -gt 6 ] && [ 10 -eq 10 ]; then echo 'Conditions are true' fi # TRUE && FALSE if [ 'mylife' == 'mylife' ] && [ 3 -gt 10 ]; then echo 'Conditions are false' fi
Изход
Пример 5
В този пример ще дефинираме как да използваме оператор OR, за да включим множество условия в израза if:
#!/bin/bash # TRUE || FALSE if [ 8 -gt 7 ] || [ 10 -eq 3 ]; then echo ' Condition is true. ' fi # FALSE || FALSE if [ 'mylife' == 'yourlife' ] || [ 3 -gt 10 ]; then echo ' Condition is false. ' fi
Изход
Пример 6
В този пример ще дефинираме как да използваме И и ИЛИ, за да включим множество условия в израза if:
#!/bin/bash # TRUE && FALSE || FALSE || TRUE if [[ 10 -eq 10 && 5 -gt 4 || 3 -eq 4 || 3 -lt 6 ]]; then echo 'Condition is true.' fi # TRUE && FALSE || FALSE if [[ 8 -eq 8 && 8 -gt 10 || 9 -lt 5 ]]; then echo 'Condition is false' fi
Изход
Опции за оператор If в Bash Scripting
Операторът If съдържа много опции за изпълнение на конкретна задача. Тези опции могат да се използват за файлови операции, операции с низове и т.н. Следват някои от най-често използваните опции:
Опции (оператори) | Описание |
---|---|
! ИЗРАЗЯВАНЕ | За да проверите дали EXPRESSION е невярно. |
-n STRING | За да проверите дали дължината на STRING е по-голяма от нула. |
-z STRING | За да проверите дали дължината на STRING е нула (т.е. празна е) |
STRING1 == STRING2 | За да проверите дали STRING1 е равно на STRING2. |
STRING1 != STRING2 | За да проверите дали STRING1 не е равно на STRING2. |
ЦЯЛО ЧИСЛО1 -eq ЦЯЛО ЧИСЛО2 | За да проверите дали INTEGER1 е числено равно на INTEGER2. |
ЦЯЛО ЧИСЛО1 -gt ЦЯЛО ЧИСЛО2 | За да проверите дали INTEGER1 е числово по-голямо от INTEGER2. |
ЦЯЛО ЧИСЛО1 -lt ЦЯЛО ЧИСЛО2 | За да проверите дали INTEGER1 е числово по-малко от INTEGER2. |
-d ФАЙЛ | За да проверите дали FILE съществува и е директория. |
-e ФАЙЛ | За да проверите дали FILE съществува. |
-r ФАЙЛ | За да проверите дали FILE съществува и дали е дадено разрешение за четене. |
-s ФАЙЛ | За да проверите дали FILE съществува и размерът му е по-голям от нула (което означава, че не е празен). |
-w ФАЙЛ | За да проверите дали FILE съществува и дали е дадено разрешение за запис. |
x ФАЙЛ | За да проверите дали FILE съществува и дали е дадено разрешение за изпълнение. |
Вложено Ако
Можете да приложите толкова „if оператори“, колкото е необходимо във вашия bash скрипт. Също така е възможно да се използва оператор if вътре в друг оператор if. Известен е като вложен оператор If.
Пример
В този пример ще намерим „дали дадено число е по-голямо от 50 и дали е четно число“, като използваме вложен израз if.
#!/bin/bash #Nested if statement if [ $1 -gt 50 ] then echo 'Number is greater than 50.' if (( $1 % 2 == 0 )) then echo 'and it is an even number.' fi fi
Изход
Ако въведем стойност на аргумент като 100, изходът ще изглежда така:
Заключение
В тази тема обсъдихме как можем да използваме условно разклоняване в последователния поток на изпълнение на оператори с bash if оператор.