Сценарії Bash – Оператор If
Bash — інтерпретатор командних мов. Це типовий інтерпретатор команд у більшості GNU/ Системи Linux і широко доступний у різних операційних системах. Назва є абревіатурою від Bourne-Again Shell . Сценарії дозволяють виконувати інструкції, які інакше виконувалися б по черзі в інтерактивному режимі.
У цій статті ми обговоримо оператор if у сценаріях bash.
Інструкція Bash If
Основний синтаксис оператора if у Bash:
#!/bin/bash if [ condition ]; then # code to be executed if the condition is true fi
Пояснення:
-
if [ condition ]; then>: цей рядок починає оператор if, деcondition>це вираз, який обчислюється. Якщо умова істинна, код всерединіthen>блок виконується. -
# code to be executed if the condition is true>: це блок коду, який виконується, якщо умова, указана в операторі if, є істинною. -
fi>: Це означає кінець оператора if.
Скрипт Bash для визначення парності числа
Нижче наведено приклад сценарій який запропонує вам ввести число, а потім перевірить, чи це число парне.
#!/usr/bin/bash
# Цей сценарій пропонує користувачеві ввести число, перевіряє його парність і друкує відповідне повідомлення.
# Запропонувати користувачеві ввести числоecho -n Введіть номер:
прочитати х# Перевірте, чи введене число парне
якщо [ $((x % 2)) == 0]; потім
echo Число парне
бути
Пояснення:
-
#!/usr/bin/bash>: це простий рядок, який визначає шлях до інтерпретатора Bash. Це вказує на те, що сценарій слід виконувати за допомогою Bash. -
echo -n 'Enter Number: '>: цей рядок друкує підказку Enter Number: без символу нового рядка (-n>варіант). Він очікує, поки користувач введе число. -
read x>: читає введені користувачем дані та призначає їх зміннійx>. -
if [ $((x % 2)) == 0 ]; then>: цей рядок перевіряє, чи є залишок від ділення введеного числа (x>) на 2 дорівнює 0. Якщо істина, це означає, що число парне. -
echo 'Number is Even'>: якщо умова в операторі if є істинною, цей рядок виводить на консоль Number is Even.
Вихід:
Скрипт Bash для визначення парності числа
Примітка: Сценарій не обробляє випадки, коли користувач вводить нечислове значення. Якщо користувач вводить нечислове значення, це може призвести до неочікуваних результатів. Щоб вирішити цю проблему, можна додати додаткову перевірку введених даних.
Оператор Bash if-else
Основний синтаксис оператора if-else у Bash:
#!/bin/bash
якщо [умова]; потім
# код, який буде виконано, якщо умова виконується
інше
# код, який буде виконано, якщо умова хибна
бути
Пояснення:
-
if [ condition ]; then>: цей рядок починає оператор if, деcondition>це вираз, який обчислюється. Якщо умова істинна, код всерединіthen>блок виконується. -
# code to be executed if the condition is true>: це блок коду, який виконується, якщо умова, указана в операторі if, є істинною. -
else>: якщо умова в операторі if є хибною, код усерединіelse>блок виконується. -
# code to be executed if the condition is false>: це блок коду, який виконується, якщо умова, указана в операторі if, є хибною. -
fi>: Це означає кінець оператора if-else.
Як знайти більше число за допомогою операторів if-else у сценарії Bash?
Ось сценарій Bash, щоб дізнатися більше число за допомогою оператора if-else у сценарії Bash.
#!/bin/bash
# Запропонувати користувачеві ввести значення для xecho -n Введіть значення x:
прочитати хif [ $x -gt 5 ]; потім
echo x більше 5
інше
echo x не перевищує 5
бути
Пояснення:
- #!/bin/bash : Цей рядок називається shebang і вказує на те, що сценарій слід інтерпретувати та виконувати за допомогою оболонки Bash.
- # Запропонувати користувачеві ввести значення для x : Це коментар, що вказує на призначення наступного рядка.
- echo -n Введіть значення x: : Цей рядок друкує повідомлення Введіть значення x: у термінал без переходу до наступного рядка. Користувач введе своє значення в цьому ж рядку.
- прочитати х : цей рядок зчитує введені користувачем дані та призначає їх змінній «x».
- if [ $x -gt 5 ]; потім : це оператор if, який перевіряє, чи значення «x» перевищує 5.
- $x : представляє значення змінної «x».
- -gt : означає більше ніж у контексті числового порівняння.
- 5 : значення, з яким порівнюється.
- echo x більше 5 : Якщо умова в попередньому рядку виконується, цей рядок буде виконано, виводячи x більше 5 на термінал.
- інше : Якщо умова в операторі if невірна, сценарій переходить до блоку else.
- echo x не перевищує 5 : цей рядок виконується, якщо значення «x» не перевищує 5, друкуючи значення x не більше 5 на терміналі.
- бути : це означає кінець блоку if-else.
Вихід:
Пошук більшого числа за допомогою if-else
Інструкція Bash if-elif-else
The if-elif-else> оператор у Bash використовується для умовного розгалуження. Це дозволяє вказувати кілька умов і виконувати різні блоки коду на основі оцінки цих умов.
Основний синтаксис оператора if-elif-else в Bash:
#!/bin/bash
if [умова1]; потім
# Код, який буде виконано, якщо умова1 істинна
elif [умова2]; потім
# Код, який буде виконано, якщо умова2 істинна
elif [умова3]; потім
# Код, який буде виконано, якщо умова3 істинна
інше
# Код, який буде виконано, якщо жодна з умов не виконується
бути
Пояснення:
- if [умова1]; потім : Це відправна точка
if-elif-else>заява. Код у цьому блоці буде виконано, якщоcondition1>правда. - # Код, який буде виконано, якщо умова1 істинна : замініть цей коментар фактичним кодом, який ви хочете запустити
condition1>правда. - elif [умова2]; потім : Якщо
condition1>false, сценарій перевіряєcondition2>. Якщоcondition2>вірно, код у цьому блоці виконується. - # Код, який буде виконано, якщо умова2 істинна : замініть цей коментар фактичним кодом, який ви хочете запустити
condition2>правда. - elif [умова3]; потім : Якщо обидва
condition1>іcondition2>помилкові, сценарій перевіряєcondition3>. Якщоcondition3>вірно, код у цьому блоці виконується. - # Код, який буде виконано, якщо умова3 істинна : замініть цей коментар фактичним кодом, який ви хочете запустити
condition3>правда. - інше : якщо жодна з попередніх умов (умова1, умова2, умова3 тощо) не відповідає дійсності, код у межах
else>блок виконується. - # Код, який буде виконано, якщо жодна з умов не виконується : замініть цей коментар фактичним кодом, який ви хочете запустити, якщо жодна з умов не виконується.
- бути : це означає кінець
if-elif-else>заява. Слово fi пишеться в зворотному порядку й використовується для закриття умовних блоків у Bash.
Як визначити, чи є число додатним, від’ємним чи нулем, використовуючи оператор if-elif-else в Bash?
Давайте розширимо код у наведеному вище прикладі, щоб додати умову для перевірки на нуль.
#!/bin/bash
# Запропонувати користувачеві ввести число
echo -n Введіть число:
прочитати номерif [$num -gt 0]; потім
echo $num є додатним числом.
elif [$num -lt 0]; потім
echo $num є від’ємним числом.
інше
echo $num дорівнює нулю.
бути
Пояснення:
- #!/bin/bash : Цей рядок є символом, який вказує на те, що сценарій має інтерпретуватися та виконуватися за допомогою оболонки Bash.
- # Запропонувати користувачеві ввести число : Це коментар, що вказує на призначення наступного рядка.
- echo -n Введіть число: : цей рядок друкує повідомлення Enter a number: на терміналі без переходу до наступного рядка. Користувач введе свій номер у цьому ж рядку.
- прочитати номер : цей рядок зчитує введені користувачем дані та призначає їх змінній «num».
- if [$num -gt 0]; потім : це оператор if, який перевіряє, чи значення «num» перевищує 0.
- $num : представляє значення змінної «num».
- -gt : означає більше ніж у контексті числового порівняння.
- 0 : значення, з яким порівнюється.
- echo $num є додатним числом. : Якщо умова в попередньому рядку виконується, цей рядок буде виконано, надруковано $num як додатне число. до терміналу.
- elif [$num -lt 0]; потім : якщо умова в операторі if є хибною, цей рядок перевіряє, чи значення «num» менше 0.
- $num : представляє значення змінної «num».
- -л : означає менше, ніж у контексті числового порівняння.
- 0 : значення, з яким порівнюється.
- echo $num є від’ємним числом. : Якщо умова в операторі elif істинна, цей рядок буде виконано, надруковано $num як від’ємне число. до терміналу.
- інше : Якщо обидві умови в операторах if і elif хибні, сценарій переходить до блоку else.
- echo $num дорівнює нулю. : цей рядок виконується, якщо значення «num» не більше 0 і не менше 0, друк $num дорівнює нулю. до терміналу.
- бути : Це означає кінець блоку if-elif-else.
Вихід:
якщо число додатне, від’ємне або нуль, використовуючи `if-elif-else`
Bash вкладений оператор if
У Bash ви можете використовувати вкладені if> оператори для створення більш складних умовних структур. Ось синтаксис для вкладеного if> заява:
#!/bin/bash
if [умова1]; потім
# Код, який буде виконано, якщо умова1 істинна
if [умова2]; потім
# Код, який буде виконано, якщо умова2 істинна
інше
# Код, який буде виконано, якщо умова2 хибна
бути
інше
# Код, який буде виконано, якщо умова1 хибна
бути
Пояснення:
- if [умова1]; потім : Це зовнішній
if>заява. Якщоcondition1>вірно, код усередині цього блоку виконується. - # Код, який буде виконано, якщо умова1 істинна : замініть цей коментар фактичним кодом, який ви хочете запустити
condition1>правда. - if [умова2]; потім : Всередині блоку зовнішнього
if>твердження, є внутрif>заява. Якщоcondition2>вірно, код усередині цього блоку виконується. - # Код, який буде виконано, якщо умова2 істинна : замініть цей коментар фактичним кодом, який ви хочете запустити
condition2>правда. - інше : Якщо
condition2>у внутрішнійif>твердження є хибним, код всерединіelse>блок внутрif>оператор виконується. - # Код, який буде виконано, якщо умова2 хибна : замініть цей коментар фактичним кодом, який ви хочете запустити
condition2>є помилковим. - бути : Це означає кінець внутрішнього
if>заява. - інше : Якщо
condition1>у зовнішньомуif>твердження є хибним, код всерединіelse>блок зовнif>оператор виконується. - # Код, який буде виконано, якщо умова1 хибна : замініть цей коментар фактичним кодом, який ви хочете запустити
condition1>є помилковим. - бути : Це позначає кінець зовнішнього
if>заява.
Як перевірити відповідність віку та пільги для пенсіонерів у Bash за допомогою вкладених операторів If?
Давайте трохи налаштуємо наведений вище код, щоб використовувати вкладене якщо.
#!/bin/bash
# Запропонувати користувачеві ввести вік
echo -n Введіть свій вік:
читати вікif [ $age -ge 18 ]; потім
echo Ви маєте право голосувати.
if [ $age -ge 65 ]; потім
echo Ви також маєте право на пільги для людей похилого віку.
інше
echo Ви ще не маєте права на пільги для людей похилого віку.
бути
інше
echo Ви ще не маєте права голосувати.
бути
Пояснення:
- #!/bin/bash : Цей рядок є символом, який вказує на те, що сценарій має інтерпретуватися та виконуватися за допомогою оболонки Bash.
- # Запропонувати користувачеві ввести вік : Це коментар, що вказує на призначення наступного рядка.
- echo -n Введіть свій вік: : цей рядок друкує повідомлення Enter your age: на терміналі без переходу до наступного рядка. У цьому ж рядку користувач введе свій вік.
- читати вік : цей рядок читає введені користувачем дані та призначає їх змінній «age».
- if [ $age -ge 18 ]; потім : це оператор if, який перевіряє, чи значення «віку» більше або дорівнює 18.
- $вік : представляє значення змінної «вік».
- -ge : означає більше або дорівнює в контексті числового порівняння.
- 18 : значення, з яким порівнюється.
- echo Ви маєте право голосувати. : Якщо умова в попередньому рядку виконується, цей рядок буде виконано, надруковано Ви маєте право голосу. до терміналу.
- if [ $age -ge 65 ]; потім : у першому блоці if це інший оператор if, який перевіряє, чи значення «віку» більше або дорівнює 65.
- $вік : представляє значення змінної «вік».
- -ge : означає більше або дорівнює в контексті числового порівняння.
- 65 : значення, з яким порівнюється.
- echo Ви також маєте право на пільги для людей похилого віку. : якщо умова у внутрішньому операторі if є істинною, цей рядок буде виконано, надруковано Ви також маєте право на пільги для пенсіонерів. до терміналу.
- інше : Якщо умова у внутрішньому операторі if невірна, сценарій переходить до блоку else всередині зовнішнього оператора if.
- echo Ви ще не маєте права на пільги для людей похилого віку. : цей рядок виконується, якщо значення «вік» не перевищує або дорівнює 65, друкуючи Ви ще не маєте права на отримання пільг для пенсіонерів. до терміналу.
- бути : Це означає кінець внутрішнього блоку if-else.
- інше : Якщо умова у зовнішньому операторі if невірна, сценарій переходить до блоку else.
- echo Ви ще не маєте права голосувати. : цей рядок виконується, якщо значення «вік» не більше або дорівнює 18, друкуючи Ви ще не маєте права голосувати. до терміналу.
- бути : Це означає кінець зовнішнього блоку if-else.
Вихід:
вкладений - якщо використовується Bash
Поширені запитання та деякі примітки щодо CONDITION
Це кілька речей, про які я повинен пам’ятати, коли пишу умови тестування в bash.
1. Переконайтеся, що пробіли між дужками та фактичним оператором перевірки/порівняння.
Наприклад, наступне не спрацює.
if [$x==0]Bash повідомить про помилку щодо a відсутній ] .
2. Завжди завершуйте рядок перед додаванням нового ключового слова, наприклад then.
Тоді if, else, elif і fi є ключовими словами оболонки, що означає, що їх не можна використовувати в одному рядку. Поставте ; між попереднім оператором і ключовим словом або почати новий рядок із ключового слова.
3. Щоб використовувати багато умов в одному операторі, використовуйте логічні оператори.
Ми можемо використовувати логічні оператори І (&&) або логічні АБО (||) для використання кількох умов.
Наприклад:
if [[ $x -ge $y ]] && [[ $x -ge $z ]]; then echo 'x is greatest' fiТут -ge є скороченням для більше або дорівнює
4. Як порівняти рядки в операторі Bash if?
Використовуйте ` => `> оператор рівності рядків і ` !=`> за нерівність.
Наприклад:
if [ '$string1' = '$string2' ]; then # Code to execute if strings are equal else # Code to execute if strings are not equal fi
5. Чи можна використовувати регулярні вирази в операторах Bash if?
Так, ви можете використовувати ` [[ ... ]]`> конструкція для розширеного зіставлення рядків із регулярними виразами.
Наприклад:
if [[ '$string' =~ ^[0-9]+$ ]]; then # Code to execute if the string contains only numbers else # Code to execute if the string does not contain only numbers fi
6. Як перевірити, чи існує файл у сценарії Bash за допомогою оператора if?
Ви можете використовувати ` -e`> прапор в умові, як це:
if [ -e 'filename' ]; then # Code to execute if the file exists else # Code to execute if the file does not exist fi
7. Який синтаксис оператора if-else у сценаріях Bash?
Основний синтаксис для an `якщо-інакше` оператор у сценаріях Bash:
if [ condition ]; then # Code to execute if condition is true else # Code to execute if condition is false fi
8. Як використовувати оператор elif у сценарії Bash?
` elif`> оператор використовується для перевірки додаткових умов, якщо початкова if> умова хибна.
Ось приклад:
if [ condition1 ]; then # Code to execute if condition1 is true elif [ condition2 ]; then # Code to execute if condition2 is true else # Code to execute if none of the conditions are true fi
9. Як я можу використовувати логічні оператори (AND, OR) у операторах Bash if?
Ви можете використовувати ` -a`> для логічних І та ` -o`> для логічного АБО.
Наприклад:
if [ condition1 -a condition2 ]; then # Code to execute if both conditions are true fi
Висновок
У цій статті ми обговорювали сценарії Bash, які є надзвичайно корисним інструментом для того, щоб ваш комп’ютер робив щось автоматично. Ця стаття навчила нас про оператор if у Bash, який схожий на засіб прийняття рішень у сценаріях. Ми вивчили основи, побачили такі приклади, як перевірка парності числа чи з’ясування того, чи може хтось проголосувати, і навіть дослідили такі цікавіші речі, як обробка багатьох умов або розміщення операторів if один в одному. У статті надано чіткі пояснення, приклади та відповіді на типові запитання, які допоможуть нам краще використовувати сценарії Bash. Головне: будьте обережні з такими деталями, як інтервали та спеціальні правила, щоб наші сценарії працювали безперебійно та полегшували виконання завдань на комп’ютері.