Условные выражения Bash

if

Формат оператора ifв Bash следующий:

if [[ some_test ]]
then
    <commands>
fi

Вот краткий пример, в котором вам будет предложено ввести свое имя, если вы оставили его пустым:

#!/bin/bash

# Bash if statement example

read -p "What is your name? " name

if [[ -z ${name} ]]
then
    echo "Please enter your name!"
fi

if else

С помощью if-elseоператора вы можете указать действие в случае, если условие в ifоператоре не соответствует. Мы можем объединить это с условными выражениями из предыдущего раздела следующим образом:

#!/bin/bash

# Bash if statement example

read -p "What is your name? " name

if [[ -z ${name} ]]
then
    echo "Please enter your name!"
else
    echo "Hi there ${name}"
fi

Вы можете использовать приведенный выше оператор if со всеми условными выражениями из предыдущих глав:

Вот еще один пример оператора if, который проверит ваш текущий статус User IDи не позволит вам запустить скрипт от имени rootпользователя:

Если вы поместите это поверх своего сценария, он закроется, если EUID равен 0, и не выполнит остальную часть сценария. Это обсуждалось на форуме сообщества DigitalOcean .

Вы также можете проверить несколько условий с помощью ifоператора. В этом примере мы хотим убедиться, что пользователь не является ни пользователем с правами администратора, ни пользователем root, чтобы гарантировать, что сценарий не сможет нанести слишком большой ущерб. В этом примере мы будем использовать orоператор, отмеченный ||. Это означает, что любое из условий должно быть истинным. Если бы мы использовали andоператор of &&, то оба условия должны были бы быть истинными.

Если у вас есть несколько условий и сценариев, вы можете использовать elifоператоры ifи elseоператоры.

switch case

Как и в других языках программирования, вы можете использовать caseоператор для упрощения сложных условий, когда есть несколько разных вариантов. Таким образом, вместо использования нескольких операторов ifи if-elseвы можете использовать один caseоператор.

Синтаксис оператора Bash caseвыглядит следующим образом:

Краткое изложение конструкции:

  • Все caseутверждения начинаются с caseключевого слова.

  • В той же строке, что и caseключевое слово, вам необходимо указать переменную или выражение, за которым следует inключевое слово.

  • После этого у вас появляются caseвыкройки, по которым нужно ) определить конец выкройки.

  • Вы можете указать несколько шаблонов, разделенных вертикальной чертой: |.

  • После шаблона вы указываете команды, которые вы хотите выполнить, если шаблон соответствует указанной вами переменной или выражению.

  • Все предложения должны быть завершены добавлением ;;в конце.

  • Вы можете использовать оператор по умолчанию, добавив *в качестве шаблона.

  • Чтобы закрыть caseоператор, используйте esacключевое слово (регистр в обратном порядке).

Вот пример оператора Bash case:

С помощью этого скрипта мы просим пользователя ввести название марки автомобиля, например Telsa, BMW, Mercedes и т. д.

Затем с помощью caseзаявления мы проверяем название бренда и соответствует ли оно какому-либо из наших шаблонов, и если да, то распечатываем местоположение фабрики.

Если название бренда не соответствует ни одному из наших caseутверждений, мы распечатываем сообщение по умолчанию: an unknown car brand.

Заключение

Я бы посоветовал вам попробовать изменить сценарий и немного поиграть с ним, чтобы вы могли попрактиковаться в том, что вы только что узнали в последних двух главах!

Дополнительные примеры caseоператоров Bash можно найти в главе 16, где мы создадим интерактивное меню в Bash, используя оператор casesдля обработки пользовательского ввода.

Last updated