Сценарії Bash – Оператор If

Сценарії 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 Число парне
бути

Пояснення:

  1. #!/usr/bin/bash> : це простий рядок, який визначає шлях до інтерпретатора Bash. Це вказує на те, що сценарій слід виконувати за допомогою Bash.
  2. echo -n 'Enter Number: '> : цей рядок друкує підказку Enter Number: без символу нового рядка ( -n> варіант). Він очікує, поки користувач введе число.
  3. read x> : читає введені користувачем дані та призначає їх змінній x> .
  4. if [ $((x % 2)) == 0 ]; then> : цей рядок перевіряє, чи є залишок від ділення введеного числа ( x> ) на 2 дорівнює 0. Якщо істина, це означає, що число парне.
  5. echo 'Number is Even'> : якщо умова в операторі if є істинною, цей рядок виводить на консоль Number is Even.

Вихід:

Скрипт Bash для визначення парності числа

Скрипт 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
# Запропонувати користувачеві ввести значення для x

echo -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

Пошук більшого числа за допомогою 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`

якщо число додатне, від’ємне або нуль, використовуючи `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

вкладений - якщо використовується 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. Головне: будьте обережні з такими деталями, як інтервали та спеціальні правила, щоб наші сценарії працювали безперебійно та полегшували виконання завдань на комп’ютері.



Кращі Статті

Категорія

Цікаві Статті