Bash: if, else и else if, полное руководство по условным операторам

Баш - одна из самых популярных оболочек в Linux. Знание условных операторов if, else if и else критически важно для написания скриптов на баше. В этой подробной статье мы рассмотрим синтаксис, практические примеры и рекомендации по использованию этих операторов. Читатели научатся принимать решения в своих скриптах и автоматизировать задачи в Linux.

Обзор условных операторов if, else if, else

Условные операторы if, else if и else используются в bash-скриптах для выполнения различных блоков кода в зависимости от результатов проверки условий. Они позволяют создавать развилки в логике скрипта.

Программист пишет скрипт на bash

Определение и назначение

  • If - выполняет блок кода, если условие истинно
  • Else if - выполняет блок кода, если предыдущие условия ложны, а текущее истинно
  • Else - выполняет блок кода, если все предыдущие условия ложны

Эти операторы критически важны для написания скриптов на bash. Они позволяют автоматизировать принятие решений и выполнение нужных действий в зависимости от состояния системы.

Мониторы с примерами скриптов на bash

Синтаксис

Синтаксис условных операторов в bash:

if [ условие ] then код # выполняется если условие истинно elif [ другое условие ] then код # выполняется если предыдущие условия ложны, а это истинно else код # выполняется если все предыдущие условия ложны fi

Условия проверяются при помощи квадратных скобок [ ]. Внутри них можно использовать различные операторы сравнения, регулярные выражения и булеву логику. Также важны ключевые слова then, которые отделяют блоки кода для выполнения.

Сравнение с другими языками

Аналогами в других языках программирования являются:

  • If - if в Python, C++, Java
  • Else if - else if в Python, C++, Java
  • Else - else в Python, C++, Java

Однако есть некоторые различия в синтаксисе и логике работы.

Принятие решений в скриптах

Условные операторы позволяют принимать решения о том, какие действия выполнить в скрипте в зависимости от определенных условий:

  • Например, если файл существует, скопировать его, если нет - вывести сообщение об ошибке
  • Если пользователь в системной группе admin, предоставить доступ к конфигу, иначе отказать в доступе

Такой подход называется ветвлением кода и является важной концепцией в программировании.

Автоматизация задач

Благодаря условным операторам скрипты на bash могут автоматически:

  • Проверять наличие обновлений и устанавливать их при необходимости
  • Резервировать и восстанавливать данные в зависимости от загруженности дисков
  • Отправлять оповещения администраторам о сбоях в работе системы
  • и многое другое...

If - простые примеры

Рассмотрим несколько простых примеров использования оператора if в bash-скриптах.

Проверка равенства

Проверим равенство двух строк:

#!/bin/bash if [ "$USER" == "john" ] then echo "Hello $USER" fi

Здесь мы выводим приветствие пользователю john. Оператор двойное равно == позволяет проверить равенство.

Числовое сравнение

Также можно использовать числовые сравнения. Например, проверка, что переменная NUM больше 10:

#!/bin/bash NUM=15 if [ $NUM -gt 10 ] then echo "$NUM > 10" fi

Здесь используется оператор -gt (больше, чем).

Другие операторы сравнения

Помимо проверки на равенство и числовых сравнений, в bash доступны и другие полезные операторы:

  • -ne - проверка на неравенство
  • -gt - больше
  • -ge - больше или равно
  • -lt - меньше
  • -le - меньше или равно

Например:

#!/bin/bash AGE=25 if [[ $AGE -lt 18 ]] then echo "Access denied" elif [[ $AGE -ge 18 ]] && [[ $AGE -le 35 ]] then echo "Access granted" else echo "Sorry, you're too old" fi

Здесь мы проверяем возраст и выводим разные сообщения в зависимости от результата.

Вложенные операторы if

Операторы if можно вкладывать друг в друга:

#!/bin/bash if [ -d /etc ] then echo "/etc exists" if [ -f /etc/passwd ] then echo "/etc/passwd exists" fi fi

Сначала проверяется, существует ли каталог /etc. Если да, то внутри проверяется наличие файла /etc/passwd. Таким образом реализуется многоуровневая логика.

Пример скрипта

Рассмотрим пример скрипта, который копирует файл если он существует:

#!/bin/bash FILE=/etc/passwd BACKUP=/tmp/passwd.bak if [ -f "$FILE" ] then cp $FILE $BACKUP echo "$FILE copied to $BACKUP" else echo "$FILE does not exist" fi

Здесь используется оператор if для проверки, что файл /etc/passwd существует перед копированием. Такой подход помогает избежать ошибок.

If - сложные выражения

Рассмотрим более сложные варианты выражений для оператора if в bash.

Логические операторы И и ИЛИ

Часто требуется проверить сразу несколько условий. Для этого используются логические операторы:

  • && - логическое И
  • || - логическое ИЛИ

Например:

#!/bin/bash if [[ $USER == "john" ]] && [[ $ID -eq 1000 ]] then echo "Hello John" fi

Здесь проверяется, что переменная $USER равна john, И переменная $ID равна 1000. Только если оба условия истинны, будет выведено приветствие.

Подстановочные выражения

В выражениях для if можно использовать командную подстановку - $():

#!/bin/bash if [[ $(id -u) -eq 0 ]] then echo "You are root" fi

Здесь в подстановке выполняется команда id -u, возвращающая идентификатор пользователя. Затем его значение сравнивается с 0, что соответствует пользователю root.

Регулярные выражения

Для проверки строковых значений удобно использовать регулярные выражения:

#!/bin/bash NAME="John Doe" if [[ $NAME =~ ^John ]] then echo "$NAME starts with John" fi

Здесь мы проверяем, что значение переменной $NAME начинается с "John" с помощью регулярного выражения.

Статья закончилась. Вопросы остались?
Комментарии 0
Подписаться
Я хочу получать
Правила публикации
Редактирование комментария возможно в течении пяти минут после его создания, либо до момента появления ответа на данный комментарий.