vi ユーザーリスト.txt
Tom
Josh
Noah
vi グループを追加します。
#!/bin/bash
for user in 'cat userlist.txt'
do
sudo usermod -a -G vncuser $user
done
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) のようなドル括弧形式を使用します。読みやすいので、2 番目の形式を好みます。
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
そして最後に「cat」を廃止する
while read user ; do
test -n "$user" && sudo usermod -a -G vncuser $user
done <userlist.txt