В сценариях оболочки нет оператора, а это !, но вы не используете его совершенно правильно.
Поместите пробел между оператором ! и его операндом и оставьте круглые скобки. Это должно работать для всех оболочек в стиле POSIX, включая bash и sh / dash.
if ! id $User > /dev/null 2>&1
then
echo "This user does NOT exists. Please create that user before using this script.\n"
exit
fi
Вы можете использовать круглые скобки для группировки, если хотите, хотя в этом нет необходимости дело. Для выполнения выражения в скобках создается новая подоболочка. Оператор ! должен иметь пробел между ним и символом (. (Пространства вокруг самих скобок необязательны.)
if ! (id $User > /dev/null 2>&1)
then
echo "This user does NOT exists. Please create that user before using this script.\n"
exit
fi
См. оболочки в стиле POSIX для некоторых хороших альтернатив и рекомендаций стиля. (Кроме того, благодаря Gilles для некоторых исправлений об использовании круглых скобок.)