Знижка 50% усі плани, обмежений час. Від $2.48/mo
Залишилось 10 хв
Сервери та ОС

Bash If Statement: синтаксис, варіації, випадки використання, команди та більше!

Pius Bodenmann By Pius Bodenmann 10 хв читання Оновлено 28 січня 2024 р.
написання скриптів bash

У shell-скриптингу оператори if у Bash відіграють ключову роль: вони дозволяють розробникам задавати умовні гілки виконання залежно від різних ситуацій. Простіше кажучи, оператори if дають змогу приймати рішення всередині Bash-скриптів - з урахуванням результатів перевірок, введення користувача або стану системи. По суті, це спосіб орієнтуватися серед різних варіантів розвитку подій.

У Bash-скриптингу оператор if має чітку структуру. Зазвичай він починається з ключового слова "if" , після якого вказується умова для перевірки, потім ключове слово "тоді", а далі - одна або кілька команд, що виконуються, якщо умова істинна.

Для більшої гнучкості оператор if може містити необов'язковий блок "elif" (інакше якщо), який спрацьовує, коли початкова умова хибна. Він дозволяє перевірити додаткову умову і діяти відповідно. Крім того, оператор if може мати необов'язковий блок "else", який виконується, якщо жодна з умов не є істинною.

Поєднуючи оператори if з іншими командами Bash та можливостями shell-скриптингу, розробники можуть створювати складні скрипти для автоматизації нетривіальних завдань і процесів. Читайте далі - і дізнаєтесь більше про оператор if у Bash: його синтаксис, сценарії використання та приклади.

Синтаксис інструкції If у Bash

Синтаксис Bash - це набір правил, що визначають структуру та граматику команд і скриптів мови Bash. Він охоплює різноманітні конструкції та елементи, зокрема:

  • Команди: це окремі виконувані програми або вбудовані команди shell, призначені для виконання конкретних завдань. Більшу частину часу при роботі з Bash ви матимете справу саме з ними.
  • Аргументи: Це значення, які передаються командам для визначення параметрів або вхідних даних. Вважайте їх умовами, що задають поведінку команди під час виконання.
  • Змінні: Це символи, що представляють значення, які можна присвоювати, змінювати або використовувати у виразах. Зазвичай вони застосовуються для визначення значень, з якими працюють команди та аргументи.
  • Перенаправлення: Це процес перенаправлення вхідних даних, виводу або помилок до файлів, пристроїв чи інших команд або від них. Без цього механізму команди легко можуть потрапити не туди і зламати ваш код.
  • Труби: Це механізм передачі виводу однієї команди на вхід іншої. Зазвичай використовується для побудови складних умовних командних рядків у великих програмах і для об'єднання команд у ланцюжки.
  • Управління потоком виконання: Це конструкції, які керують порядком виконання команд: цикли, умовні оператори, функції. Розуміння структур управління є ключовим для написання нетривіальних командних рядків і додає вашому коду ще один рівень гнучкості.
  • Коментарі: Це анотації, які ігноруються оболонкою і служать для документування коду або пояснення його логіки. Вони особливо важливі як орієнтири під час аналізу та налагодження, зокрема в командних проєктах.

Синтаксис Bash повинен бути написаний правильно, щоб оболонка могла інтерпретувати та виконувати команди. Синтаксичні помилки можуть призвести до повідомлень про помилки або непередбачуваної поведінки.

Ось оператор Bash if у дії:

if condition
then
   command1
   command2
   ...
   commandN
elif condition2
then
   commandA
   commandB
   ...
   commandC
else
   commandX
   commandY
   ...
   commandZ
fi

У наведеному прикладі «condition» означає перевірку, що повертає результат true або false. Якщо умова істинна, виконуються команди після ключового слова «then». Якщо ж потрібно перевірити додаткову умову, використовується ключове слово «elif» — воно дає змогу розглянути ще одну можливість. Якщо жодна з умов не виявилася істинною, у гру вступають команди після ключового слова «else» — це своєрідний запасний варіант. Нарешті, ключове слово «fi» позначає кінець оператора if.

Як працюють інструкції Bash?

У Bash-скриптингу оператор if є незамінним інструментом для керування ходом виконання скрипту залежно від результату умовної перевірки. Його завдання — оцінити умову і, якщо вона істинна, виконати певний набір команд.

Розглянемо, як це відбувається на практиці, коли оператор if зустрічається у Bash-скрипті. Скрипт обчислює умову, зазначену в операторі if. Якщо умова виявляється істинною, виконуються команди у блоці «then».

Якщо ж умова хибна, скрипт переходить до перевірки додаткових умов у блоках elif. Якщо одна з них виявляється істинною, виконуються команди відповідного блоку elif. Якщо жодна з умов в операторах if та elif не є істинною, скрипт виконує команди з блоку else, якщо він є.

По суті, оператор if реалізує прийняття рішень у скрипті, дозволяючи йому виконуватися різними шляхами залежно від результату перевірки. Сама перевірка може враховувати різні чинники: результат виконання команди або значення змінної.

Приклади інструкції If у Bash

Відійдемо від теорії і подивимося, як оператор Bash if застосовується в реальній розробці. Ось приклад, що демонструє його роботу:

#!/bin/bash
# set a variable
x=5
# evaluate the variable
if [ $x -gt 4 ]
then
  echo "x is greater than 4."
else
  echo "x is less than or equal to 4."
fi

У цьому прикладі оператор if перевіряє значення змінної x. Якщо x більше 4, скрипт виводить «x is greater than 4». Якщо x менше або дорівнює 4, скрипт виводить «x is less than or equal to 4».

Тепер, коли ви добре розумієте базовий оператор Bash If і принцип його роботи, давайте детальніше розглянемо його варіації та пов'язані команди: Basic If, Nested If, Bash If Else, If Elif Else і Case.

Базові оператори if

Почнемо з базового оператора if у Bash. Він перевіряє умову і, якщо вона істинна, виконує відповідний блок коду. Ось синтаксис:

if [ condition ]
then
  commands
fi

У цьому випадку скрипт обчислює умову і, якщо вона істинна, виконує зазначені команди. Якщо умова хибна, скрипт переходить до наступної команди, не виконуючи блок у розділі «then».

Вкладені оператори If

Вкладений оператор if, як і випливає з назви, — це оператор if всередині іншого оператора if. Така структура дозволяє реалізовувати складніші перевірки та логіку всередині скрипту. Ось приклад:

if [ condition1 ]
then
  if [ condition2 ]
  then
    commands
  fi
fi

Як видно з коду, скрипт спочатку перевіряє condition1. Якщо condition1 істинна, він переходить до перевірки condition2. Якщо condition2 також істинна, виконуються потрібні команди.

Оператори Bash If Else

Оператор Bash if else дозволяє приймати рішення у скрипті залежно від того, чи є умова істинною чи хибною, що відкриває більше можливостей для умовного виконання коду. Ось як виглядає його структура:

if [ condition ]
then
  commands1
else
  commands2
fi

Ця конструкція гарантує: якщо умова виконується, скрипт негайно виконає «commands1». Якщо ж умова хибна, він перейде до виконання «commands2».

Умови If Elif Else

Іноді потрібно перевірити кілька умов і опрацювати кожен можливий результат. Оператор if elif else якраз для цього. Розгляньте наступний синтаксис:

if [ condition1 ]
then
  commands1
elif [ condition2 ]
then
  commands2
else
  commands3
fi

Скрипт спочатку перевіряє condition1. Якщо вона істинна, виконується commands1. Якщо condition1 хибна, скрипт переходить до перевірки condition2. Якщо condition2 істинна, виконується commands2. Якщо обидві умови хибні, скрипт виконає запасний варіант — commands3.

Оператори switch

У Bash є оператор case, який працює аналогічно до switch в інших мовах програмування. Він дозволяє виконувати різні набори команд залежно від значення змінної. Ось як виглядає його структура:

case expression in
  pattern1)
    commands1;;
  pattern2)
    commands2;;
  pattern3)
    commands3;;
*)
default commands;;
esac

Скрипт обчислює значення змінної expression і порівнює його з різними шаблонами. Якщо знайдено збіг, виконується відповідний набір команд. Якщо жоден шаблон не підійшов, виконуються команди за замовчуванням. Шаблон зірочки (*) є символом підстановки й відповідає будь-якому значенню, яке не було охоплено попередніми шаблонами.

Логічні оператори Bash

Невід'ємна частина роботи оператора if у Bash — це логічні оператори. Вони дозволяють об'єднувати кілька умов і приймати рішення на основі їхнього спільного результату. У Bash є три основні логічні оператори для використання в умовах if. Нижче наведено приклади команд для кожного з них.

  • Bash AND (&&):
if [ $age -ge 18 ] && [ "$citizen" == "yes" ]; then
  echo "You meet the criteria for voting."
fi
  • Логічне або (||):
if [ "$status" == "active" ] || [ "$role" == "admin" ]; then
  echo "Access granted."
fi
  • Не дорівнює:
if(( ! $a == "true" )) then 
  echo "a" was initially false. 
else
  echo "a" was initially true. 
fi

Висновок

У цій статті ми розглянули основи операторів if у Bash і способи їх використання, а також з'ясували, як вони роблять код чистішим і функціональнішим. Грамотно застосовуючи умовні оператори, ви зможете писати потужні скрипти, здатні вирішувати складні завдання й приймати нетривіальні рішення.

Вперше чуєте про Linux? Ми допоможемо розібратися! Наш Linux VPS — ідеальна відправна точка для початківців: простий у використанні, але без обмежень у можливостях. Зрозумілий інтерфейс і підтримка фахівців зроблять старт максимально комфортним. Налаштовуєте сайт, тестуєте застосунки чи просто досліджуєте можливості Linux — наш Linux VPS забезпечить безпечне середовище без зайвих складнощів. Почніть впевнено: перегляньте наші варіанти Linux VPS вже сьогодні й зробіть перший крок у світ Linux!

Linux VPS-хостинг

Отримайте економний або преміум Linux VPS для хостингу сайту чи віддаленого робочого столу за найнижчою ціною. VPS працює на Linux KVM для більшої ефективності та потужному залізі з NVMe SSD-сховищем для більшої швидкості.

Читати далі

Часто задавані питання

Чи можна використовувати логічні оператори в умовах if у Bash?

Так, в умовах if у Bash можна використовувати логічні оператори, наприклад і та '||' Наприклад, if [ $var -gt 0 ] && [ $var -lt 10 ]; then … виконає блок коду, якщо $var більше 0 і менше 10.

Чи можна задати кілька умов в одному операторі if?

Так, кілька умов в одному операторі if можна задати за допомогою логічних операторів, зокрема -a (AND) або -o (АБО) для їх об'єднання. Наприклад, if [ $var -gt 0 -a $var -lt 10 ]; then … виконає блок коду, якщо $var більше 0 І менше 10.

Чи можна використовувати підстановку команд в умовах if у Bash?

Так, у Bash можна використовувати підстановку команд в умовних операторах if, якщо взяти команду в $() або зворотні лапки (Переклад: ). Наприклад, if [ $(whoami) == "root" ]; then … виконає блок коду, якщо поточний користувач є root.

[[ vs [ vs ( vs ((: у чому різниця між цими операторами Bash?

Коротко: [[ використовується для складних умовних перевірок. [ — для простих умовних перевірок. ( — для групування в підоболонці та виконання команд. (( — для арифметичних операцій.

 

Поділитися

Більше з блогу

Продовжуйте читати.

Обкладинка статті про найкращі самохостовані додатки для Cosmos Cloud з панелями додатків навколо панелі керування Cosmos.
Сервери та ОС

Найкращі самохостовані додатки для Cosmos Cloud: файли, медіа, паролі, автоматизація та інше!

Можливо, ви вже налаштували Cosmos Cloud і хочете дізнатися, які додатки до нього добре пасують, або ще не визначились із Cosmos і просто хочете побачити, як він впишеться у ваш робочий процес

Nick SilverNick Silver 16 хв читання
Обкладинка статті Portainer проти Cosmos Cloud для керування Docker-додатками з діаграмою гібридного налаштування та неоновими блоками операцій і доступу.
Сервери та ОС

Portainer проти Cosmos Cloud: що краще для керування Docker-додатками

Якщо ви вже знаєте Docker і просто хочете чистіший спосіб запустити стек додатків, що росте, ось коротка відповідь на Portainer проти Cosmos Cloud. Portainer — сильніший вибір для прямого

Nick SilverNick Silver 14 хв читання
Обкладинка Cosmos Cloud проти CasaOS проти Umbrel з трьома шляхами самохостингу в одному абстрактному світі хмарної мережі.
Сервери та ОС

Cosmos Cloud проти CasaOS проти Umbrel: яка платформа для самостійного хостингу вам підійде?

Коротка відповідь: CasaOS досі найпростіший спосіб почати, Umbrel має найчистіше відчуття курування, а Cosmos Cloud стає кращим вибором, коли ви хочете жорсткіший контроль над доменами

Nick SilverNick Silver 11 хв читання

Готові розгортати? Від $2,48/міс.

Незалежна хмара з 2008 року. AMD EPYC, NVMe, 40 Gbps. Повернення коштів за 14 днів.