Shell 从bash脚本创建用户帐户

Shell 从bash脚本创建用户帐户,shell,unix,scripting,Shell,Unix,Scripting,这是我必须从文本文件创建用户帐户的代码。用户名来自文本文件,我想将密码设置为unix lab。但是,此脚本似乎不起作用 #!/bin/sh for i in `cat unix_tuesday.txt` password = "unixlab" do echo "adduser $i" adduser $i echo -e "$password" | passwd $password done 通过报告运行此操作: 第2行: 对于我来说,在'cat unix_tuday.txt中` ^-

这是我必须从文本文件创建用户帐户的代码。用户名来自文本文件,我想将密码设置为unix lab。但是,此脚本似乎不起作用

#!/bin/sh
for i in `cat unix_tuesday.txt`
password = "unixlab"
do
echo "adduser  $i"
adduser $i 
echo -e "$password" | passwd $password

done
通过报告运行此操作:

第2行: 对于我来说,在'cat unix_tuday.txt中` ^-SC1073:无法分析此for循环。修复以允许更多检查。 第3行: 密码=unixlab ^-SC1058:应为“do”。 ^-SC1072:应为“do”。修复所有提到的问题,然后重试。 密码分配介于for和do之间。将其移到开头会产生一组新的错误:

第2行: 密码=unixlab ^-SC1068:在赋值中,不要在=周围加空格。 第3行: 对于我来说,在'cat unix_tuday.txt中` ^-SC2013:要读取行而不是单词,请将管道/重定向到“while read”循环。 ^-SC2006:使用$。。而不是遗留的“…”。 第6行: adduser$i ^-SC2086:双引号可防止全局搜索和分词。 第7行: echo-e$password | passwd$password ^-SC2039:在POSIX sh中,回显标志未定义。 人工用户

-p、 -password密码由crypt3返回的加密密码。默认设置是禁用密码

注意:不建议使用此选项,因为密码或 列出进程的用户可以看到加密密码


有几个问题:

您的for循环已断开do放置错误 passwd需要一个特殊的选项 这应该满足您的要求:

#!/usr/bin/env bash
for i in $(cat unix_tuesday.txt); do
   password=unixlab
   adduser $i 
   echo $password | passwd $i --stdin
done
还要考虑到adduser和useradd之间存在一个连接