Оператор Bash 'if else': підручник і приклади

Використання оператора 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, виконується. Після цього подальші умови не перевіряються, і виконання коду продовжується до коду після fi заяву.

Якщо жодна з умов не повертає статус 0, в блоці 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

Умовами можуть бути будь-які команди Linux. Відповідний блок коду буде виконано, якщо команда буде виконана успішно.

якщо 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

Спочатку код перевіряє, чи вже встановлено Nginx в системі. Якщо це так, він просто відображає повідомлення та виходить. Якщо це не так, він намагається встановити Nginx.

Якщо з якоїсь причини Nginx не вдалося встановити в систему з пакета, він намагається встановити Apache2. Якщо навіть Apache2 видає помилку під час встановлення, він виходить з відображенням повідомлення про те, що програмне забезпечення не може бути встановлено.

Подібним чином вкладений блок можна використовувати всередині файлу elif також блокувати.

Виконання якщо...інакше: скрипти та командний рядок

Як і будь-який код Bash, файл якщо...інакше Оператор можна використовувати в оболонці Bash безпосередньо або з файлу сценарію виконуваної оболонки. Після того, як інтерпретатор Bash знайде файл якщо, інше або elif оператор продовжує оболонку, дозволяючи користувачеві ввести кодовий блок.

Користувач також може зберегти цей код у файлі сценарію та виконати файл сценарію.

The #!/bin/bash на початку вказує інтерпретатор, який буде використовуватися під час виконання файлу. Хоча Bash є найбільш часто використовуваною оболонкою в наш час, деякі користувачі віддають перевагу оболонкам, таким як zsh, які слід вказати замість bash на початку цього файлу.

Щоб надати дозволи на виконання для цього файлу, виконайте:

chmod +x test.sh

Нарешті, щоб виконати файл, запустіть:

./test.sh

Висновок

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

Категорія: Linux