Почему выполнение скрипта всегда идет по ветке ELSE?
grep -q всегда пустая строка, [ -n '' ]всегда будет false
Если нужно проверить exit code, можно сделать if cat /etc/passwd | cut -d: -f1 | grep -q "$CUSTOM_USER"; then
Вообще grep не очень подходит для определения наличия пользователя, лучше сделать if id  $CUSTOM_USER &>/dev/null; then
а почему должно быть не false?if [[ -n  `id $CUSTOM_USER 2>/dev/null` ]]; then