Операторы IF

Введение в Bash-скриптинг

Alex Scriven

Data Scientist

Базовый оператор IF

Базовый оператор IF в Bash имеет следующую структуру:

if [ CONDITION ]; then

# SOME CODE
else # SOME OTHER CODE
fi

Два совета:

  • Пробелы между квадратными скобками и условием внутри (первая строка)
  • Точка с запятой после закрывающей скобки ];
Введение в Bash-скриптинг

Оператор IF и строки

В операторе IF можно выполнять сравнение строк:

x="Queen"

if [ $x == "King" ]; then
echo "$x is a King!"
else echo "$x is not a King!" fi
Queen is not a King!

Для проверки неравенства используйте !=

Введение в Bash-скриптинг

Арифметические операторы IF (вариант 1)

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

x=10

if (($x > 5)); then echo "$x is more than 5!" fi
10 is more than 5!
Введение в Bash-скриптинг

Арифметические операторы IF (вариант 2)

Арифметические операторы IF также поддерживают квадратные скобки с арифметическими флагами вместо (>, <, =, != и др.):

  • -eq — равно
  • -ne — не равно
  • -lt — меньше
  • -le — меньше или равно
  • -gt — больше
  • -ge — больше или равно
Введение в Bash-скриптинг

Пример арифметического оператора IF

Воссоздадим предыдущий пример с использованием нотации квадратных скобок:

x=10
if [ $x -gt 5 ]; then
    echo "$x is more than 5!"
fi
10 is more than 5!
Введение в Bash-скриптинг

Другие условные флаги Bash

В Bash есть набор флагов для работы с файлами:

  • -e — файл существует
  • -s — файл существует и имеет ненулевой размер
  • -r — файл существует и доступен для чтения
  • -w — файл существует и доступен для записи

И другие флаги:

Введение в Bash-скриптинг

AND и OR в Bash

 

Для объединения условий (AND) или использования OR в Bash применяются следующие символы:

  • && — И (AND)
  • || — ИЛИ (OR)
Введение в Bash-скриптинг

Несколько условий

В Bash можно объединять условия цепочкой:

x=10
if [ $x -gt 5 ] && [ $x -lt 11 ]; then
    echo "$x is more than 5 and less than 11!"
fi

Или использовать нотацию двойных квадратных скобок:

x=10
if [[ $x -gt 5 && $x -lt 11 ]]; then
    echo "$x is more than 5 and less than 11!"
fi
Введение в Bash-скриптинг

IF и команды командной строки

Также можно использовать команды командной строки прямо в условии, убрав квадратные скобки.

Например, если файл words.txt содержит «Hello World!»:

if grep -q Hello words.txt; then
    echo "Hello is inside!"
fi
Hello is inside!
Введение в Bash-скриптинг

IF с вложенной оболочкой

В условии также можно использовать вложенную оболочку.

Перепишем предыдущий пример — результат будет тем же.

if $(grep -q Hello words.txt); then
    echo "Hello is inside!"
fi
Hello is inside!
Введение в Bash-скриптинг

Давайте потренируемся!

Введение в Bash-скриптинг

Preparing Video For Download...