Изявление на Bash 'if else': Урок и примери

Използване на оператора if...else в Bash за условно изпълнение на код.

Bash (Bourne Again Shell) е команден ред и скриптов език в GNU/Linux операционни системи. Това е обвивката по подразбиране за повечето дистрибуции на Linux.

Условните изрази са жизненоважни във всеки език за програмиране, както компилирани, така и скриптирани. Те позволяват на потребителя да изпълни част от код въз основа на предварително дефинирано условие, което е една от основите на логиката на програмирането. В тази статия ще научим как да използваме ако...друго условно изявление в Bash.

Въведение

В ако...друго изявление в Bash позволява на потребителя да манипулира потока от код въз основа на условия. Потребителят може да посочи отделни кодови блокове, които да бъдат изпълнени, само един от които накрая ще бъде изпълнен по време на изпълнение, въз основа на съответното условие, което е удовлетворено.

Имайте предвид, че могат да бъдат посочени повече от две условия, за които елиф изявление може да се използва. Потребителят може да даде произволен брой условия, използвайки елиф, и накрая условие по подразбиране, използващо друго блок. Нека видим повече за това в синтаксиса и примерите по-долу.

Общ синтаксис

Общият синтаксис за ако...друго изявлението в Bash е:

ако тогава  друго  fi

Тук, ако удовлетворява, т.е., ако върне 0 (успех), тогава се изпълнява кодов блок 1. Ако условието не върне 0, т.е. връща състояние на неуспех, тогава кодовият блок 2 се изпълнява. В ако...друго блок завършва с a fi изявление.

За множество блокове, съответстващи на множество условия,елиф се използва:

ако тогава  елиф тогава  елиф тогава  ... ... друго  fi

Тук условията се проверяват по ред и се изпълнява кодовият блок на първото условие, който връща статус 0 (успех). напр. ако връща ненулев статус (провал), след това се проверява. Ако връща състояние 0, се изпълнява. След това допълнителни условия не се проверяват и изпълнението на кода продължава към кода след fi изявление.

Ако нито едно от условията не върне статус 0, в блока else се изпълнява. Имайте предвид, че блокът else не е задължителен. Ако не е изпълнено нито едно условие, както и не друго блок е посочен, няма да се изпълнява условен кодов блок и изпълнението на кода ще продължи към кода след fi изявление, както е показано в диаграмата по-долу.

Обърнете внимание, че тогава изявлението трябва да се използва само след ако и елиф изявления и не се изисква след друго изявление.

Примери

За да изпълните кодов блок ако променлива има определена стойност:

x=0 if [ $x -eq 0 ] then echo "Стойността на X е 0" в противен случай echo "Стойността на X не е 0" fi

За да проверите за множество стойности:

x=2 ако [ $x -eq 0 ], тогава echo "Стойността на X е 0" elif [ $x -eq 1 ] след това echo "Стойността на X е 1" elif [ $x -eq 2 ] след това echo "Стойността на X е 2" иначе ехо "Стойността на X не е 0" fi

Условията могат да бъдат всякакви команди на Linux. Съответният кодов блок ще се изпълни, ако командата се изпълни успешно.

ако npm -v тогава echo "NPM присъства в системата" else sudo apt install npm fi

В примера по-горе, тъй като npm не е инсталиран в системата, командата npm -v върна ненулево състояние. Следователно изпълнението на кода влезе в друго блок, където инсталираме npm с помощта на ап пакетен мениджър. Както виждаме, той ме подкани да въведа паролата и започна инсталирането на npm.

Можем да вложим и друг ако...друго блок вътре в ако, друго или елиф блок:

x=0 y=1 ако [ $x -eq 0 ] тогава echo "X е 0", ако [ $y -eq 1 ], тогава echo "Y е 1" иначе echo "Y не е 1" fi иначе echo "X е не 0" fi

Това е полезно, когато трябва да се провери отделен набор от условия, след като първоначално условие е удовлетворено.

Например следният код се опитва да инсталира софтуер за уеб сървър:

ако nginx -v тогава echo "NGINX е вече инсталиран." иначе ако sudo apt инсталира nginx, тогава echo "инсталирането на NGINX е успешно." elif sudo apt инсталирайте apache2 след това echo "Инсталацията на APACHE2 успешна." else echo "Не мога да инсталирам уеб софтуер." fi

Кодът първо проверява дали Nginx вече е инсталиран в системата. Ако е, просто показва съобщение и излиза. Ако не е, той се опитва да инсталира Nginx.

Ако по някаква причина Nginx не може да бъде инсталиран в системата от пакета, той се опитва да инсталира Apache2. Ако дори Apache2 даде грешка по време на инсталацията, той излиза, показвайки съобщение, че не може да бъде инсталиран софтуер.

По подобен начин може да се използва вложен блок вътре елиф блок също.

Изпълнение ако...друго: Скриптове и команден ред

Подобно на всеки Bash код, the ако...друго изявлението може да се използва в Bash shell директно или от изпълним файл на скрипт. След като интерпретаторът на Bash намери an ако, друго или елиф оператор, той продължава обвивката, за да позволи на потребителя да влезе в кодовия блок.

Потребителят може също да запише този код в скриптов файл и да изпълни скрипт файла.

В #!/bin/bash в началото определя интерпретатора, който да се използва, когато файлът се изпълнява. Въпреки че Bash е най-често използваната обвивка в днешно време, някои потребители предпочитат обвивки като zsh, които трябва да бъдат посочени на мястото на bash в началото на този файл.

За да дадете разрешения за изпълнение на този файл, изпълнете:

chmod +x test.sh

Накрая, за да изпълните файла, изпълнете:

./test.sh

Заключение

Подобно на всеки език за програмиране, ако...друго твърдението е основна характеристика на Bash. Изучаването на използването му е дълъг път при писането на основни, както и напреднали скриптове.

Категория: Linux