Создание пользователей из текстового файла с помощью Bash

#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