Використання оператора if…else в Bash для умовного виконання коду.
Bash (Bourne Again Shell) — це командний рядок і мова сценаріїв оболонки в операційних системах GNU/Linux. Це оболонка за замовчуванням для більшості дистрибутивів Linux.
Умовні оператори є життєво важливими в будь-якій мові програмування, як скомпільованих, так і написаних сценаріями. Вони дозволяють користувачеві виконувати фрагмент коду на основі попередньо визначеної умови, що є однією з основ логіки програмування. У цій статті ми дізнаємося, як користуватися якщо...інакше
умовний оператор у Bash.
Вступ
The якщо...інакше
Оператор у Bash дозволяє користувачеві маніпулювати потоком коду на основі умов. Користувач може вказати окремі блоки коду, які будуть виконуватися, тільки один з яких, нарешті, буде виконуватися під час виконання, на основі відповідної умови, яка задоволена.
Зауважте, що можна вказати більше двох умов, для яких elif
можна використовувати заяву. Користувач може задати будь-яку кількість умов за допомогою elif
, і, нарешті, умова за замовчуванням використання інше
блокувати. Давайте подивимося більше про це в синтаксисі та прикладах нижче.
Загальний синтаксис
Загальний синтаксис для якщо...інакше
Заява в Bash:
якщо тоді інше fi
Тут, якщо задовольняє, тобто якщо він повертає 0 (успіх), то виконується блок коду 1. Якщо умова не повертає 0, тобто повертає статус відмови, то виконується блок коду 2. The
якщо...інакше
блок закінчується на а fi
заяву.
Для кількох блоків, що відповідають кільком умовам,elif
використовується:
якщо тоді тоді еліф тоді еліф ... ... ще fi
Тут умови перевіряються по порядку і виконується блок коду першої умови, який повертає статус 0 (успіх). напр. якщо Якщо жодна з умов не повертає статус 0, Зауважте, що Для виконання блоку коду якщо змінна має конкретне значення: Щоб перевірити кілька значень: Умовами можуть бути будь-які команди Linux. Відповідний блок коду буде виконано, якщо команда буде виконана успішно. У наведеному вище прикладі, оскільки Ми також можемо вкласти ще одну Це корисно, коли необхідно перевірити окремий набір умов після виконання початкової умови. Наприклад, наступний код намагається встановити програмне забезпечення веб-сервера: Спочатку код перевіряє, чи вже встановлено Nginx в системі. Якщо це так, він просто відображає повідомлення та виходить. Якщо це не так, він намагається встановити Nginx. Якщо з якоїсь причини Nginx не вдалося встановити в систему з пакета, він намагається встановити Apache2. Якщо навіть Apache2 видає помилку під час встановлення, він виходить з відображенням повідомлення про те, що програмне забезпечення не може бути встановлено. Подібним чином вкладений блок можна використовувати всередині файлу Як і будь-який код Bash, файл Користувач також може зберегти цей код у файлі сценарію та виконати файл сценарію. The Щоб надати дозволи на виконання для цього файлу, виконайте: Нарешті, щоб виконати файл, запустіть: Подібно до будь-якої мови програмування, повертає ненульовий статус (збій).
перевіряється. Якщо
повертає статус 0,
виконується. Після цього подальші умови не перевіряються, і виконання коду продовжується до коду після
fi
заяву. в блоці else виконується. Зауважте, що блок else є необов'язковим. Якщо жодна умова не виконується, а також ні
інше
блок заданий, блок умовного коду не запускатиметься, а виконання коду продовжиться до коду після fi
заяву, як показано на блок-схемі нижче.тоді
оператор слід використовувати тільки після якщо
і elif
заяви і не обов’язкові після інше
заяву.Приклади
x=0 if [ $x -eq 0 ] then echo "Value of X is 0" else echo "Value of X is not 0" fi
x=2 if [ $x -eq 0 ] then echo "Value of X is 0" elif [ $x -eq 1 ] then echo "Value of X is 1" elif [ $x -eq 2 ] then echo "Value of X дорівнює 2" інакше echo "Значення X не дорівнює 0" fi
якщо npm -v then echo "NPM присутній в системі" інакше sudo apt install npm fi
npm
не було встановлено в системі, команда npm -v
повернув ненульовий статус. Отже, виконання коду перейшло в інше
блок, куди ми встановлюємо npm за допомогою прих
менеджер пакетів. Як бачимо, він підказав мені ввести пароль і почав установку npm.якщо...інакше
блок всередині an якщо
, інше
або elif
блок:x=0 y=1 if [ $x -eq 0 ] then echo "X is 0", if [ $y -eq 1 ] then echo "Y is 1" else echo "Y is not 1" fi else echo "X is не 0" fi
якщо nginx -v then echo "NGINX вже встановлено." інакше якщо sudo apt install nginx then echo «Установка NGINX успішна». elif sudo apt install apache2 then echo "Успішне встановлення APACHE2." else echo "Не вдається встановити будь-яке веб-програмне забезпечення." fi
elif
також блокувати.Виконання
якщо...інакше
: скрипти та командний рядокякщо...інакше
Оператор можна використовувати в оболонці Bash безпосередньо або з файлу сценарію виконуваної оболонки. Після того, як інтерпретатор Bash знайде файл якщо
, інше
або elif
оператор продовжує оболонку, дозволяючи користувачеві ввести кодовий блок.#!/bin/bash
на початку вказує інтерпретатор, який буде використовуватися під час виконання файлу. Хоча Bash є найбільш часто використовуваною оболонкою в наш час, деякі користувачі віддають перевагу оболонкам, таким як zsh, які слід вказати замість bash на початку цього файлу.chmod +x test.sh
./test.sh
Висновок
якщо...інакше
оператор є фундаментальною особливістю Bash. Вивчення його використання має великий шлях у написанні базових, а також розширених сценаріїв.