Условие if-else применяется в скриптах BASH очень часто. Само условие имеет несколько странный вид [[ условие ]]. Обратите внимание на отступы. Без них условие работать не будет. Привожу список логических операторов для условия [[ ? ]]:
оператор | описание |
---|---|
-z | строка пуста |
-n | строка не пуста |
=, (==) | строки равны |
!= | строки неравны |
-eq | равно |
-ne | неравно |
-lt,(< ) | меньше |
-le,(<=) | меньше или равно |
-gt,(>) | больше |
-ge,(>=) | больше или равно |
! | отрицание логического выражения |
-a,(&&) | логическое «И» |
-o,(||) | логическое «ИЛИ» |
#!/bin/bash
if [[ $1 > 2 ]]
then
# если соответствует условию [[ ? ]]
echo $1" больше 2"
else
# если не соответствует условию
echo $1" меньше 2 или 2"
fi
Кому-то из вас покажется странным оператор равенства -eq. Попробуйте использовать привычные операторы > < =... Если не сработает такой подход, то воспользуйтесь оператором из моего списка.
Допустим у вас есть скрипт и необходима проверка пользователя. Если пользователь не root, то произойдёт остановка скрипта.
#!/bin/bash
if [ "$(whoami)" != 'root' ]; then
echo "У вас нет прав для запуска $0."
exit 1;
fi
Часто нужно проверять переменную на наличие значения. Если ничего в переменной нет, то можно остановить скрипт.
#!/bin/bash
if [ -n "$num" ]; then
"переменная что-то имеет и можно запустить другой процесс"
else
echo "пустая переменная, останавливаем скрипт"
exit 0;
fi
Если переменная пустая, то её можно наполнить.
#!/bin/bash
if [ -z "$num" ]; then
echo "переменная пустая"
num=1
else
echo "num="$num
fi
Пустой переменной можно присвоить значение по умолчанию. Такая запись короче чем в предыдущем примере.
#!/bin/bash
# Записать DEFAULT, если аргументы командной строки отсутствуют
[ -z "$arg1" ] && arg1=DEFAULT
echo $arg1