Добавить нескольких пользователей в 1 группу в Debian10

Добавить нескольких пользователей в 1 группу в Debian10

vi userlist.txt

Tom
Josh
Noah

vi addgroup.sh

#!/bin/bash
for user in 'cat userlist.txt'
do
sudo usermod -a -G vncuser $user
done

sh addgroup.sh

Usage usermod [options] LOGIN

как решить эту ошибку "Usage usermod [options] LOGIN"? извините, я новичок в этом деле, заранее спасибо!.

решение1

Вы зацикливаетесь на "cat userlist.txt", а не на содержимом файла. Это значит, что $user будет равен "cat", а затем "userlist.txt". Вы можете добавить строку журнала, например:

echo "Adding user '$user' to group vncuser"

Как это исправить: используйте либо обратные кавычки command, либо скобки доллара, например $(command). Я предпочитаю второй вариант, потому что его легче читать.

for user in $(egrep -v "^#|^$" userlist.txt); do
  echo "Adding user '$user' to group 'vncuser'"
  sudo usermod -a -G vncuser $user
done

Что я тут сделал? Я использовал egrep для фильтрации строк, начинающихся с #, и пустых строк.

решение2

Каждую переменную строки заключайте в двойные кавычки:

while IFS= read -r line
do
  sudo usermod -a -G vncuser "$line"
done <userlist.txt

Затем сделайте это chmod +x filename.shперед выполнением.

решение3

Первый шаг: Вам нужно использовать либо обратные кавычки (не одинарные), либо просто $()оператор

for user in $(cat userlist.txt) do
  sudo usermod -a -G vncuser $user
done

В дополнение к этому, вы можете получить пустые строки, поэтому

for user in $(cat userlist.txt) do
  test -n "$user" && sudo usermod -a -G vncuser $user
done

И наконец, избавьтесь от `кошки'

while read user ; do
  test -n "$user" && sudo usermod -a -G vncuser $user
done <userlist.txt

Связанный контент