如何在Linux下使用bash脚本添加多个用户,然后将其添加到组中

  • 本文关键字:添加 然后 用户 Linux 脚本 bash bash
  • 更新时间 :
  • 英文 :


我有一个名为users .txt的txt文件,其中包含这些信息(名称后跟组类型)。例:(这些是少数例子,因为有更多的输入。)

Usernames.txt:

ellipsiscoterie,visitor
magnetcommonest,visitor
belateddefensive,staff
wizardmeans,visitor
bobstercaramelize,staff

在下面的脚本中,我尝试将每一行的名称添加为用户,并将每个新用户分配到各自的组。然而,我遇到了这个错误。结果和我想的不一样。我希望有人能帮助我,谢谢。

基本上这就是我想要做的,但是对于txt文件中的每一行。例如,sudo useradd bobstercaramelize(这是用户的名称)和sudo usermod -a -G staff bobstercaremelize

错误:

createUsers.sh: line 4: $'[visitorr': command not found

代码:

#!/bin/bash 
while read line; do
arrIN=(${line//,/ })
if [${arrIN[1]} = "visitor" ]; then
sudo useradd ${arrIN[0]}
sudo usermod -a -G  visitors ${arrIN[0]}
else
sudo useradd ${arrIN[0]}
sudo usermod -a -G staff ${arrIN[0]}
fi
done < Usernames.txt

首先,错误似乎源于缺少空格:[${arrIN[1]} = "visitor" ]需要是[ ${arrIN[1]} = "visitor" ]。注意[${arrIN[1]}之间有空格

第二,错误消息中的r表明Usernames.txt文件的行尾可能有问题。尝试用Unix/Linux的行尾来保存它(即每行只能以n结束)。

第三,您可能需要考虑以不同的方式解析文件的内容:

while IFS=, read user group; do
if [ "${group}" = "visitor" ]; then
sudo useradd "${user}"
sudo usermod -a -G  visitors "${user}"
else
sudo useradd "${user}"
sudo usermod -a -G staff "${user}"
fi
done < Usernames.txt

这样,read为您做了拆分,使事情更容易,更精确,更可读。我还在适当的地方添加了双引号。