![在 debian10 中将多个用户添加到一个组](https://linux22.com/image/1618599/%E5%9C%A8%20debian10%20%E4%B8%AD%E5%B0%86%E5%A4%9A%E4%B8%AA%E7%94%A8%E6%88%B7%E6%B7%BB%E5%8A%A0%E5%88%B0%E4%B8%80%E4%B8%AA%E7%BB%84.png)
vi 用户列表.txt
Tom
Josh
Noah
添加组
#!/bin/bash
for user in 'cat userlist.txt'
do
sudo usermod -a -G vncuser $user
done
sh 添加群组
Usage usermod [options] LOGIN
我该如何解决这个“使用 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