Поиск по сайту:
Кто не предъявляет своих требований, о том никто не заботится (Н.Г. Чернышевский).

Как использовать if-else в Bash

18.02.2025
Как использовать if-else в Bash

Во многих языках программирования есть условные операторы, такие как if-else. Эти операторы также присутствуют в Bash — оболочке по умолчанию, используемой почти во всех современных дистрибутивах Linux. Операторы if-else используются для проверки условий — они позволяют выполнять определённые команды в зависимости от того, является ли условие истинным или ложным. Операторы if-else работают точно так же, как и в любом другом языке программирования.

В этой статье мы на практических примерах рассмотрим, как использовать операторы if-else в оболочке Bash.

 

Оператор if в Bash

Оператор if в Bash позволяет выполнять определённые команды в зависимости от значения истинности заданного условия. Для проверки истинности используются два логических оператора: True и False. Оператор if используется, когда нужно проверить условие. Он управляет ходом выполнения сценария, позволяя принимать решения на основе значений переменных, результатов выполнения команд и других условий.

Оператор if работает следующим образом:

  1. Сначала программа проверяет условие (условие может быть командой или математическим выражением), содержащееся в операторе if .
  2. Если условие выполняется, программа выполняет команды, перечисленные после ключевого слова then .
  3. Если условие не выполняется, программа выполняет команды, перечисленные после оператора else .

 

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

if [condition]; then
  # команды, выполняемые при выполнении условия true
fi

 

Давайте разберём работу оператора if на простом практическом примере. Мы создадим скрипт, который запрашивает у пользователя число, и если введённое число больше 10, система вернёт сообщение «The number is greater than 10».

  1. Создайте новый файл с расширением .sh , например, с помощью редактора nano :
nano greater_than_10.sh
  1. Вставьте следующий код:
#!/bin/bash

read -p "Enter a number: " number

if [ $number -gt 10 ]; then
    echo "The number is greater than 10."
fi
  1. Предоставьте файлу разрешения на выполнение:
chmod +x greater_than_10.sh
  1. Теперь запустите скрипт:
./greater_than_10.sh

 

Выходной сигнал:

Enter a number:

 

Введите любое число, например 32, и нажмите Enter. Поскольку 32 больше 10 и это условие возвращает значение True, программа выполнит команду echo

Enter a number: 32
The number is greater than 10

 

Читать  Что такое команда xfontsel в Linux?

Давайте разберем сценарий более подробно:

  • Условия записываются в квадратных скобках. В этом примере используется оператор -gt (больше, эквивалентно символу >).
  • Далее мы проверяем условие. Если оно истинно, программа выполняет команду после ключевого слова then
  • Сценарий завершается ключевым словом fi, сигнализирующим о завершении блока if

 

Однако у этого скрипта есть один существенный недостаток: он не обрабатывает случай, когда введённое число меньше 10. Скрипт ничего не вернёт, потому что для этого случая нет условия.

Чтобы решить эту проблему, мы воспользуемся оператором else, который обсудим в следующей главе.

 

Оператор if-else в Bash

В предыдущем разделе мы запустили скрипт с одним условием в операторе if — True. Мы не указали никаких действий для условия False. В результате, если мы вводили значение, приводящее к False, ответа не было. Если мы хотим, чтобы скрипт выполнял определённые действия для ложного условия False, нам нужно использовать оператор else, который следует за оператором if

Оператор if-else в Bash используется для выполнения условных операций. Он позволяет выполнять определённые команды в зависимости от того, является ли условие истинным или ложным. Синтаксис if-else выглядит следующим образом:

if [condition]; then
    # команды, выполняемые при выполнении условия true
else
    # команды, выполняемые, если условие false
fi

 

Помните, что ключевые слова, в том числе if и else, в сценариях Bash чувствительны к регистру. Будьте внимательны при использовании ключевых слов в файлах сценариев.

Давайте рассмотрим использование операторов if-else на практическом примере. В этом случае мы создадим скрипт Bash, который будет запрашивать у пользователя число, а система будет показывать, больше или меньше это число, чем 10.

  1. Создайте новый файл с расширением .sh:
nano check.sh
  1. Вставьте следующий код:
#!/bin/bash

read -p "Enter a number: " number

if [ $number -gt 10 ]; then
    echo "The number is greater than 10."
else
    echo "The number is less than or equal to 10."
fi
  1. Предоставьте файлу разрешения на выполнение:
chmod +x check.sh
  1. Теперь запустите скрипт:
./check.sh

 

Читать  Что такое Systemctl и как вы должны его использовать?

Алгоритм работы скрипта работает следующим образом:

  • После ключевого слова if мы указываем условие в квадратных скобках. В этом примере мы используем оператор -gt (больше или равно, эквивалентно символу >).
  • Проверяется условие. Если условие истинно, программа выполняет команду после ключевого слова then — в данном случае выводит сообщение «The number is greater than 10». Если условие ложно, программа выполняет команду после ключевого слова else и выводит сообщение «Число меньше или равно 10».
  • Как только одно из условий будет выполнено, программа завершится, о чём свидетельствует ключевое слово fi в конце.

 

Выведите, если число больше 10:

Enter a number: 56
The number is greater than 10.

 

Выведите, если число меньше 10:

Enter a number: 6
The number is less than or equal to 10.

Практическое использование if-else в Bash

Давайте рассмотрим практическое применение оператора if-else в Bash, который можно использовать при написании скриптов.

 

Пример сценария 1. Проверка, выполняется ли от имени root

Сначала мы создадим скрипт, который проверяет, выполняется ли файл скрипта от имени пользователя root. Это может быть полезно при написании скриптов, требующих прав root, например, при установке пакетов от имени пользователя root.

  1. Создайте файл с именем check-for-root.sh:
nano check-for-root.sh
  1. Используйте следующий код для проверки наличия пользователя root:
#!/bin/bash

if [[ $EUID -ne 0 ]]; then
  /usr/bin/printf "${R}>>>>${NC} Please run as root\n"
  exit 1
fi
  1. Предоставьте файлу разрешения на выполнение:
chmod +x check-for-root.sh
  1. И запустите его:
./check-for-root.sh

 

Если скрипт запускается от имени обычного пользователя, в консоли будет выведено сообщение «Please run as root».

Проверка для root пользователя использует условие $EUID -ne 0, где:

  • $EUID Это переменная среды, которая содержит числовой идентификатор пользователя. В системах Linux пользователь root всегда имеет идентификатор 0, в то время как другие учётные записи пользователей начинаются с 1000.
  • -ne Это оператор сравнения, означающий «не равно». Вместо ne можно также использовать !=.

 

Читать  Проверка орфографии в командной строке Linux

Пример сценария 2. Проверка дистрибутива Linux

Далее давайте создадим ещё один скрипт, который проверяет, какой дистрибутив Linux используется. Если скрипт запущен в Ubuntu, он выведет сообщение «This is Ubuntu». Если скрипт запущен в любом другом дистрибутиве Linux, он выведет «Not Ubuntu. You can run this script only on Ubuntu distributions».

  1. Создайте файл с именем check-for-distribution.sh:
nano check-for-distribution.sh
  1. Используйте следующий код:
#!/bin/bash

dist=`grep DISTRIB_ID /etc/*-release | awk -F '=' '{print $2}'`

if [ "$dist" == "Ubuntu" ]; then
  echo "This is Ubuntu"
else
  echo "Not Ubuntu. You can run this script only on Ubuntu distributions"
fi
  1. Сделайте файл исполняемым:
chmod +x check-for-distribution.sh
  1. И запустите его:
./check-for-distribution.sh

 

Если скрипт запущен в системе Ubuntu, он выведет «This is Ubuntu». В любом другом дистрибутиве он выведет «Not Ubuntu. You can run this script only on Ubuntu distributions».

 

Пример скрипта 3. Проверка существования файла.

Теперь давайте рассмотрим другой практический пример. Мы создадим сценарий Bash, который проверяет, существует ли файл с именем file1.txt. Если его нет, сценарий создаст его. Сценарий проверяет наличие файла в том же каталоге, в котором он запущен. Если файл уже существует, сценарий выведет сообщение, не создавая файл.

  1. Создайте файл с именем check-file.sh:
nano check-file.sh
  1. Используйте следующий код скрипта:
#!/bin/bash

FILE="file1.txt"

if [ ! -f "$FILE" ]; then
    touch "$FILE"
    echo "$FILE has been created."
else
    echo "$FILE already exists."
fi
  1. Предоставьте разрешения на выполнение скрипта:
chmod +x check-file.sh
  1. Запустите скрипт:
./check-file.sh

 

Если файл file1.txt уже существует в каталоге, из которого запускается скрипт, вы увидите сообщение «file1.txt already exists». Файл не будет создан.

 

Заключение

В этой статье мы рассмотрели принципы логических операторов, таких как if-else в оболочке Bash, и привели практические примеры их использования. Эти примеры полезны при написании скриптов для автоматизации системных задач или проверок.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...
Поделиться в соц. сетях:


0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

**ссылки nofollow

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

Это может быть вам интересно


Рекомендуемое
В 2025 году операционная система Windows 11 претерпела значительные изменения,…

Спасибо!

Теперь редакторы в курсе.