Условие if-else BASH
Условие if-else применяется в скриптах BASH очень часто. Само условие имеет несколько странный вид [[ условие ]]. Обратите внимание на отступы. Без них условие работать не будет. Привожу список логических операторов для условия [[ ? ]]:
Список логических операторов, которые
используются для конструкции if-then-else-fi
| оператор | описание |
|---|---|
| -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