Доброго времени суток коллеги.
Имею следующий код в bash-скрипте:
#!/bin/bash
set -e
if [ -n "$(cat /etc/passwd | cut -d: -f1 | grep -q "$CUSTOM_USER")" ]; then
echo "FATAL ERROR: user \"$CUSTOM_USER\" already exist"
exit 1
else
USER_CREATE_CMD="$CUSTOM_USER"
fi
Вся проблема в первой линии. Передаю я существующего или не существующего пользователя - обработка идет по ветке else в любом случае.
Логика того что нужно сделать простая - если юзер с таким именем уже есть в системе, тогда выдать ошибку. Если нет - записать его имя переменную, которая будет использоваться далее по коду.
Я с bash-скриптами пересекаюсь не часто, поэтому можете объяснить почему так происходит? Что я упускаю из виду?
UPD:
Вариант без кавычек выдает точно такое же поведение
if [ -n $(cat /etc/passwd | cut -d: -f1 | grep -q "$CUSTOM_USER") ]; then