Използване на оператора if...else в Bash за условно изпълнение на код.
Bash (Bourne Again Shell) е команден ред и скриптов език в GNU/Linux операционни системи. Това е обвивката по подразбиране за повечето дистрибуции на Linux.
Условните изрази са жизненоважни във всеки език за програмиране, както компилирани, така и скриптирани. Те позволяват на потребителя да изпълни част от код въз основа на предварително дефинирано условие, което е една от основите на логиката на програмирането. В тази статия ще научим как да използваме ако...друго
условно изявление в Bash.
Въведение
В ако...друго
изявление в Bash позволява на потребителя да манипулира потока от код въз основа на условия. Потребителят може да посочи отделни кодови блокове, които да бъдат изпълнени, само един от които накрая ще бъде изпълнен по време на изпълнение, въз основа на съответното условие, което е удовлетворено.
Имайте предвид, че могат да бъдат посочени повече от две условия, за които елиф
изявление може да се използва. Потребителят може да даде произволен брой условия, използвайки елиф
, и накрая условие по подразбиране, използващо друго
блок. Нека видим повече за това в синтаксиса и примерите по-долу.
Общ синтаксис
Общият синтаксис за ако...друго
изявлението в Bash е:
ако тогава друго fi
Тук, ако удовлетворява, т.е., ако върне 0 (успех), тогава се изпълнява кодов блок 1. Ако условието не върне 0, т.е. връща състояние на неуспех, тогава кодовият блок 2 се изпълнява. В
ако...друго
блок завършва с a fi
изявление.
За множество блокове, съответстващи на множество условия,елиф
се използва:
ако тогава елиф тогава елиф тогава ... ... друго fi
Тук условията се проверяват по ред и се изпълнява кодовият блок на първото условие, който връща статус 0 (успех). напр. ако Ако нито едно от условията не върне статус 0, Обърнете внимание, че За да изпълните кодов блок ако променлива има определена стойност: За да проверите за множество стойности: Условията могат да бъдат всякакви команди на Linux. Съответният кодов блок ще се изпълни, ако командата се изпълни успешно. В примера по-горе, тъй като Можем да вложим и друг Това е полезно, когато трябва да се провери отделен набор от условия, след като първоначално условие е удовлетворено. Например следният код се опитва да инсталира софтуер за уеб сървър: Кодът първо проверява дали Nginx вече е инсталиран в системата. Ако е, просто показва съобщение и излиза. Ако не е, той се опитва да инсталира Nginx. Ако по някаква причина Nginx не може да бъде инсталиран в системата от пакета, той се опитва да инсталира Apache2. Ако дори Apache2 даде грешка по време на инсталацията, той излиза, показвайки съобщение, че не може да бъде инсталиран софтуер. По подобен начин може да се използва вложен блок вътре Подобно на всеки Bash код, the Потребителят може също да запише този код в скриптов файл и да изпълни скрипт файла. В За да дадете разрешения за изпълнение на този файл, изпълнете: Накрая, за да изпълните файла, изпълнете: Подобно на всеки език за програмиране, връща ненулев статус (провал), след това
се проверява. Ако
връща състояние 0,
се изпълнява. След това допълнителни условия не се проверяват и изпълнението на кода продължава към кода след
fi
изявление. в блока 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
ако 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
елиф
блок също.Изпълнение
ако...друго
: Скриптове и команден редако...друго
изявлението може да се използва в Bash shell директно или от изпълним файл на скрипт. След като интерпретаторът на Bash намери an ако
, друго
или елиф
оператор, той продължава обвивката, за да позволи на потребителя да влезе в кодовия блок.#!/bin/bash
в началото определя интерпретатора, който да се използва, когато файлът се изпълнява. Въпреки че Bash е най-често използваната обвивка в днешно време, някои потребители предпочитат обвивки като zsh, които трябва да бъдат посочени на мястото на bash в началото на този файл.chmod +x test.sh
./test.sh
Заключение
ако...друго
твърдението е основна характеристика на Bash. Изучаването на използването му е дълъг път при писането на основни, както и напреднали скриптове.