Введение в Bash-скриптинг
Alex Scriven
Data Scientist
Базовый оператор IF в Bash имеет следующую структуру:
if [ CONDITION ]; then# SOME CODEelse # SOME OTHER CODEfi
Два совета:
];В операторе IF можно выполнять сравнение строк:
x="Queen"if [ $x == "King" ]; thenecho "$x is a King!"else echo "$x is not a King!" fi
Queen is not a King!
Для проверки неравенства используйте !=
Для арифметических условий в IF можно использовать двойные скобки:
x=10if (($x > 5)); then echo "$x is more than 5!" fi
10 is more than 5!
Арифметические операторы IF также поддерживают квадратные скобки с арифметическими флагами вместо (>, <, =, != и др.):
-eq — равно-ne — не равно-lt — меньше-le — меньше или равно-gt — больше-ge — больше или равноВоссоздадим предыдущий пример с использованием нотации квадратных скобок:
x=10
if [ $x -gt 5 ]; then
echo "$x is more than 5!"
fi
10 is more than 5!
В Bash есть набор флагов для работы с файлами:
-e — файл существует-s — файл существует и имеет ненулевой размер-r — файл существует и доступен для чтения-w — файл существует и доступен для записиИ другие флаги:
Для объединения условий (AND) или использования OR в Bash применяются следующие символы:
&& — И (AND)|| — ИЛИ (OR)В 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
Также можно использовать команды командной строки прямо в условии, убрав квадратные скобки.
Например, если файл words.txt содержит «Hello World!»:
if grep -q Hello words.txt; then
echo "Hello is inside!"
fi
Hello is inside!
В условии также можно использовать вложенную оболочку.
Перепишем предыдущий пример — результат будет тем же.
if $(grep -q Hello words.txt); then
echo "Hello is inside!"
fi
Hello is inside!
Введение в Bash-скриптинг