training-web.ruГлавнаяКатегорииО насКарта сайтаПоискТёмная тема

Категории

Условие if-else BASH

Создано: 21 февраля 2017Автор: Егор Астапов31915 просмотровСложность: легкий

Условие 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

Комментарии

Bolder: 29 июня 2019 14:18:30
Операторов >= и

A1: 24 января 2020 22:52:35
Спасибо! )

Михаил: 25 апреля 2020 20:02:40
Важная вещь: скобки представляют собой на самом деле команду оболочки test, то есть в условии можно использовать любую команду/утилиту, возвращающую значение при завершении

реклама