Код useradd вызывает библиотечную функцию mkdir для (попытки) создания указанного каталога. useradd проверяет код возврата, но только на то, что он не равен нулю; в этом случае я подозреваю, что mkdir возвращает ENOENT -- компонент каталога в имени пути не существует или является оборванной символической ссылкой
, поскольку родительский каталог (/opt/atlassian) не существовал или имел был удален во время ваших попыток добавить пользователя.
Как отмечают Kusalananda/roaima, самое простое решение здесь — создать структуру родительского каталога перед вызовом useradd:
sudo mkdir -p /opt/atlassian
sudo /usr/sbin/useradd --create- home --home-dir /opt/atlassian/bitbucket --shell /bin/bash atlbitbucket
При выводе переменной заключайте ее в кавычки. Он расширяется, а затем разделяется на слова, поэтому echo
получает hello
и there
в качестве отдельных аргументов.
echo "$LINE"
или выше
printf '%s\n' "$LINE"
сохраните пробелы
так что не read
меняет ваш пробел, а то, что вы не заключаете переменную в кавычки позже