vi Benutzerliste.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
wie löse ich diesen „Usage usermod [options] LOGIN“-Fehler? Entschuldigung, ich bin ein Anfänger auf diesem Gebiet, danke im Voraus!
Antwort1
Sie durchlaufen eine Schleife mit „cat userlist.txt“, nicht mit dem Inhalt der Datei. Das bedeutet, dass $user gleich „cat“ und dann gleich „userlist.txt“ ist. Sie könnten eine Protokollzeile wie diese hinzufügen:
echo "Adding user '$user' to group vncuser"
So beheben Sie das Problem: Verwenden Sie entweder Backtick- command
oder Dollarklammernformat wie $(Befehl). Ich bevorzuge das zweite Format, weil es leichter zu lesen ist.
for user in $(egrep -v "^#|^$" userlist.txt); do
echo "Adding user '$user' to group 'vncuser'"
sudo usermod -a -G vncuser $user
done
Was habe ich hier gemacht? Ich habe egrep verwendet, um Zeilen zu filtern, die mit einem # beginnen, und leere Zeilen.
Antwort2
Jede Zeilenvariable wird in doppelte Anführungszeichen gesetzt:
while IFS= read -r line
do
sudo usermod -a -G vncuser "$line"
done <userlist.txt
Führen Sie dann ein aus, chmod +x filename.sh
bevor Sie es ausführen.
Antwort3
Erster Schritt: Sie müssen entweder Backticks (keine einfachen Anführungszeichen) oder nur den $()
Operator
for user in $(cat userlist.txt) do
sudo usermod -a -G vncuser $user
done
Darüber hinaus erhalten Sie möglicherweise leere Zeilen.
for user in $(cat userlist.txt) do
test -n "$user" && sudo usermod -a -G vncuser $user
done
Und endlich Schluss mit „Katze“
while read user ; do
test -n "$user" && sudo usermod -a -G vncuser $user
done <userlist.txt