Você não nos fornece insights sobre sua tarefa específica e sobre o conteúdo do arquivo users.txt
, mas eu poderia dar algumas recomendações que eliminarão problemas simples.
Primeiro
Sempre envolva todas as variáveis com aspas duplas "
nos scripts bash. Esse truque simples ajuda a evitar muitos problemas de script. No seu caso particular, substitua todos os $i
por "$i"
.
Segundo
Sempre adicione o traço duplo --
no final da linha de comando para indicar as opções de fim de comando. Isso ajuda a evitar problemas quando o parâmetro posicional tiver -
como parte de sua sequência. Finalmente, a linha com o comando useradd
será semelhante a:
$ sudo useradd -m -s /bin/bash -G interns -- "$i"
Terceiro
Considere que os nomes de usuários devem satisfazer as restrições. Depende de uma determinada distribuição Linux, aqui está uma citação de man useradd
do 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.
E, finalmente, leia este para estar ciente de outros erros comuns.
Veja também newusers
utility, pode ser mais fácil se você tiver toneladas de usuários para criar.