Вы должны изменить через $?
переменную. Он хранит возвращаемое значение последней команды:
id -u $username > /dev/null 2>&1 ;
if [[ "$?" -eq 0 ]]; then
echo "username already exists."
Если оно равно 1, оно не существует.
Кстати, ваши блоки очень грязные .... Воспользуйтесь следующей ссылкой:
Отступ (набор)
Также закройте ваши блоки.
Сценарий оболочки, если только он не создан интерактивной оболочкой, очень редко запускается в среде интерактивной оболочки. Это означает, что $-
не будет включать i
.
Что вы можете проверить, так это посмотреть, подключен ли стандартный ввод к терминалу или нет. Это делается с помощью теста -t
с аргументом0
(файлового дескриптора стандартного входного потока):
running_interactively () { [ -t 0 ]; }
Это предполагает, что под «работает в интерактивном режиме» вы подразумеваете «возможность чтения ввода непосредственно с терминала».
Дополнительный тест дескриптора файла 2 (стандартная ошибка )также возможен в качестве проверки возможности полного взаимодействия с пользователем в сценарии. Взаимодействие с пользователем в основном происходит при стандартном вводе (, пользовательском вводе )и стандартных сообщениях об ошибках (, диагностических сообщениях и т. д. ):
.running_interactively () { [ -t 0 ] && [ -t 2 ]; }
Однако проверка стандартного вывода )файлового дескриптора 1 (завершится ошибкой, если выходные данные сценария будут перенаправлены или переданы по конвейеру.