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

Оператор if у Bash: синтаксис, варіації, сценарії використання, команди та інше!

Піус Боденман By Піус Боденман 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 реалізує прийняття рішень у скрипті, дозволяючи йому виконуватися різними шляхами залежно від результату перевірки. Сама перевірка може враховувати різні чинники: результат виконання команди або значення змінної.

Оператор Bash If на прикладах

Відійдемо від теорії і подивимося, як оператор 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?

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

 

Поділитися

Ще з блогу

Читайте далі.

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

Найкращі self-hosted застосунки для Cosmos Cloud: файли, медіа, паролі, автоматизація та не тільки!

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

Нік СільверНік Сільвер 16 хвилин читання
Portainer проти Cosmos Cloud для керування Docker застосунками: обкладинка з діаграмою гібридного налаштування та неоновими блоками ops і access.
Сервери та ОС

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

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

Нік СільверНік Сільвер 14 хв читання
Порівняльна графіка Cosmos Cloud, CasaOS та Umbrel, що показує три варіанти самостійного хостингу в межах однієї абстрактної хмарної мережі.
Сервери та ОС

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

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

Нік СільверНік Сільвер 11 хв читання

Готові до розгортання? З $2.48/міс.

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