我有一个名为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
为您做了拆分,使事情更容易,更精确,更可读。我还在适当的地方添加了双引号。