#linux #bash
#linux #bash
Вопрос:
Я просматривал некоторые другие ответы на этот вопрос, но это не решило мою проблему.
В принципе, мне нужно создать скрипт, который считывает данные из текстового файла, который вводится пользователем, и создает пользователей из содержимого файла. Мне удалось заставить его создать первого пользователя, но, похоже, он не создает других пользователей в файле.
Мой текстовый документ буквально:
user1
user2
user3
И вот код, который у меня есть:
echo -n "Enter name of text file "; read text
while read USER;
do
USERNAME=$(cut -d$'n' -f $text)
echo $USERNAME
useradd -m "${USERNAME}"
done < $text
Кажется, что читается только самая первая запись в текстовом файле, но я подумал, что использование n будет означать, что он вырезает другие строки и использует их дальше? Я попытался использовать вместо этого команду ‘cat’, но с ней не очень повезло, и это самое большее, чего мне удалось добиться, но я надеялся, что кто-нибудь поможет мне найти, где я ошибся. Спасибо 🙂
Комментарии:
1. Почему бы просто не
xargs -n 1 useradd -m <file
?
Ответ №1:
Во-первых, вы должны запустить свой скрипт с
#!/usr/bin/env bash
чтобы убедиться, что он интерпретируется как bash.
Во-вторых, нужное вам значение уже доступно в USER
переменной. Нет необходимости использовать cut
.
#!/usr/bin/env bash
echo -n "Enter name of text file: "; read FILENAME
while read USER; do
echo "$USER"
useradd -m "${USER}"
done < "${FILENAME}"
Комментарии:
1. Большое вам спасибо, этот метод сработал. Я застрял на этом дольше, чем следовало, но я ценю помощь!
Ответ №2:
Вы можете использовать awk
для печати и передачи в оболочку
$ awk '{print "useradd -m "$1}' <file> | sh