在 debian10 中将多个用户添加到一个组

在 debian10 中将多个用户添加到一个组

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

相关内容