我正在尝试从文本文件添加多个用户,然后将其添加到一个组,但我一直收到此错误:
'seradd: invalid user name 'srogers
我当前的脚本是:
for i in $(cat users.txt)
do
echo $i
sudo useradd -m -s /bin/bash -G interns $i
done
我究竟做错了什么?
答案1
您没有向我们提供有关您的特定任务和users.txt
文件内容的见解,但我可以提供一些可以消除简单问题的建议。
第一的
在 bash 脚本中,始终用双引号括住所有变量"
。这个简单的技巧有助于避免很多脚本问题。在您的特定情况下,请将所有变量替换$i
为"$i"
。
第二
--
始终在命令行末尾添加双破折号以表示命令选项的结束。当位置参数-
作为其字符串的一部分时,它有助于避免出现问题。最后,带有命令的行将useradd
如下所示:
$ sudo useradd -m -s /bin/bash -G interns -- "$i"
第三
考虑用户名应该满足约束。这取决于特定的 Linux 发行版,这里引用自man useradd
Ubuntu 14.04
It is usually recommended to only use usernames that begin with a lower
case letter or an underscore, followed by lower case letters, digits,
underscores, or dashes. They can end with a dollar sign. In regular
expression terms: [a-z_][a-z0-9_-]*[$]?
On Debian, the only constraints are that usernames must neither start
with a dash ('-') nor plus ('+') nor tilde ('~') nor contain a colon
(':'), a comma (','), or a whitespace (space: ' ', end of line: '\n',
tabulation: '\t', etc.). Note that using a slash ('/') may break the
default algorithm for the definition of the user's home directory.
Usernames may only be up to 32 characters long.
最后读这注意其他常见错误。
还请查看newusers
实用程序,如果您有大量用户需要创建,它可能会更容易。