[[ Проверки ]]

Проверки

Проверка пользователей

Проверка root'a

if [ "$UID" -ne 0 ]; then
  echo "::=> Requires root privileges"
  exit 1
fi

Проверка существования пользователя

if ! grep -q "^${USERNAME}:" /etc/passwd; then
 echo "Пользователь не найден"
 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 "::=> Directory does not exist :: $DIR"
  exit 1
fi

Проверка на существование файла

if [ ! -e "$FILE" ]; then
  echo "::=> File does not exist :: $FILE"
  exit 1
fi

Директория существует и доступна для записи

if ! [[ -d "$FTPDIR" &&  -w "$FTPDIR" ]]; then
  echo "Директория не верна или отсутствуют права для записи"
  exit 1
 fi

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

  test -x /usr/sbin/ || exit 1

Прочее

Проверка результата выполнения программы

rm /tmp/non_exist_file
 
if [ $? -ne 0 ]; then
  echo "::=> Critical exit :: ${BASH_SOURCE} line:${LINENO}" 
  exit 1
 fi

Строка содержит нужное слово

TEMP_DATA="12345 lol 54321"
if echo "${TEMP_DATA}" | grep -iq "lol"; then
  echo "Found"
fi

Значение является целым числом

PORT=22a
if [[ ! ${RDC_APP_PORT} =~ ^[0-9]+$ ]]; then
  echo "Port is not a numeric value"
fi



Обсуждение

starper, 2013/12/21 12:01

Неплохая тематическая шпора, сенкс.
Я бы еще кое-что добавил, например (на вскидку):
#### Проверка пути ######
DIR=${1:-$PWD} # Если не задан путь к каталогу, будет использован текущий

Ваш комментарий. Вики-синтаксис разрешён:
137 +8 = 
 
practice/bash/input.txt · Последнее изменение: 2022/08/31 14:53 — 127.0.0.1
Gentoo Linux Gentoo Linux Driven by DokuWiki