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