Инструменты пользователя

Инструменты сайта

Загрузка не удалась. Возможно, проблемы с правами доступа?

linux:bash-if

Bash - проверки

Проверка UID

UID_ROOT=0
 
if [ "$UID" -ne "$UID_ROOT" ]
then
  echo "Для работы требуются права root"
  exit 1
fi

Проверка входящих параметров

Проверка на существование
if [ -z "$1" ]
then
  echo "Значение не задано"
  exit 1
fi
Обязательно присутствие двух параметров
if [[ -z "$1" || -z "$2" ]]
then
  echo "Значение не задано"
  exit 1
fi
Проверки файлов и каталогов
Проверка на существование директории
if [ ! -d "$DIR" ]; then
  echo "Директория не верна"
  exit 1
fi
Проверка на существование файла
if [ ! -e "$FILE" ]; then
  echo "Файл не найден"
  exit 1
fi
Директория существует и доступна для записи
if ! [[ -d "$FTPDIR" &&  -w "$FTPDIR" ]]; then
  echo "Директория не верна или отсутствуют права для записи"
  exit 1
 fi

Прочее

== Проверка существования файла, а также есть есть права на чтение и выполнение. ==
Если условия не выполняются, то выполнится exit

test -x /usr/sbin/ || exit 1
Проверка существования пользователя
grep "^$username:" /etc/passwd >/dev/null
if [ $? -ne 0 ]; then
 echo "Пользователь не найден"
 exit 1
fi

То же самое - но проще

Сравнения чисел

[ A -eq B ]   # равно
[ A -ne B ]   # не равно
[ A -gt B ]
[ A -lt B ]
[ A -ge B ]
[ A -le B ]
(( A < B ))
(( A <= B ))
(( A > B ))
(( A >= B ))

Сравнения строк

[ A = B ]
[ A == B ]
[ A != B ]
[ A \< B ]
[ A \> B ]
[ -z A ]    # строка пустая?
[ -n A ]    # строка не пустая?

Сравнения файлов

-e     Файл существует
-f     Обычный файл
-s     Ненулевой размер файла
-d     Является каталогом
-b     Является блочным устройством (cdrom)
-c     Является символьным устройство
-p     Является каналом
-h     Является символической ссылкой
-L     Является символической ссылкой
-S     Является сокетом
-t 0   Является stdin
-t 1   Является stdout
-r     Доступен для чтения
-w     Доступен для записи
-x     Доступен для исполнения
-g     Есть sgid
-u     Есть suid
-k     Есть sticky bit
-O     Я — владелец?
-G     Моя группа — владелец?
-N     Файл был модифицирован после чтения?
F1 -nt F2    F1 новее чем F2?
F1 -ot F2    F1 старее чем F2?
F1 -ef F2    F1 является жесткой ссылкой F2?

Сопоставляем файл с регулярным выражением

if [[ $file =~ ^[0-9]+\.jpg$ ]] ; then
      echo $file;
else    
      echo '!' $file;
fi

Операнды

  • && - логическое «И»
  • || - логичекое «или»

Замечание - чтобы использовать операнды, скобки должны быть двойные [[ ... ]] Пример:

if [ "$1" != 'help' ] || ["$1" != 'auto'] || [ "$1" != 'toftp' ] || [ "$1" != 'tolocal' ] || [ "$1" != '' ]
then
	echo ""
	echo "Неверный параметр $1"
	exit 1
else
	param=$1
fi;
linux/bash-if.txt · Последние изменения: 2021/02/11 09:20 (внешнее изменение)