Bash 使用while循环检查用户是否已存在的脚本
需要脚本帮助。该脚本将从文本文档中获取名称和分配组的列表作为参数,然后从这些名称、随机密码和给定组和用户的主目录中创建唯一的用户名。我一直坚持将分配的组与该组的新用户名进行匹配,并进行while循环,该循环将测试新创建的用户名是否已经在系统中,如果没有,则将用户和组添加到主目录中。例如/主页/组/用户名。 我已经做了一个if语句,它将测试用户是否已经存在,否则就添加用户。我想用while循环而不是if-else来实现这一点 输入为文本文档,多个名称按以下顺序列出 最后一组 例如 脚本将从名字和姓氏中提取第一个字符,并向其中添加三个随机数,以便为列表中的每个名称创建一个唯一的用户名。我已经在函数Bash 使用while循环检查用户是否已存在的脚本,bash,Bash,需要脚本帮助。该脚本将从文本文档中获取名称和分配组的列表作为参数,然后从这些名称、随机密码和给定组和用户的主目录中创建唯一的用户名。我一直坚持将分配的组与该组的新用户名进行匹配,并进行while循环,该循环将测试新创建的用户名是否已经在系统中,如果没有,则将用户和组添加到主目录中。例如/主页/组/用户名。 我已经做了一个if语句,它将测试用户是否已经存在,否则就添加用户。我想用while循环而不是if-else来实现这一点 输入为文本文档,多个名称按以下顺序列出 最后一组 例如 脚本将从名字和姓
createLogin
中完成了此操作。接下来,在我被卡住的地方,我需要一个while循环来测试系统是否已经拥有用户名createLogin
并将用户和组添加到主目录中
if id -u $user >/dev/null 2>&1
then
user=$(createLogin) # If user already exists, create new username
else
# add new user and group. ie. /home/group/user`
改用递归函数
#!/bin/bash
function check_user_exists() {
if id -u $1 >/dev/null 2>&1; then
# username exists - try another username and loop
user=$(createLogin)
check_user_exists $user
else
# create user
fi
}
while read line
do
user=$(createLogin)
check_user_exists $user
done
useradd
命令还允许您使用-G
选项按名称将新用户添加到特定组。您还不清楚需要哪些帮助。你能澄清一下你的问题吗?也许展示你的输入样本,并解释你想如何使用它会很有用。这将有助于测试。不过,现在我对如何添加用户有点困惑。我使用的是useradd-G$group-d/home/$group/$user
,其中$group和$user是包含指定组和用户的变量。这不起作用。命令中缺少用户名useradd$user-G$group-d/home/$group/$user/
。
#!/bin/bash
function check_user_exists() {
if id -u $1 >/dev/null 2>&1; then
# username exists - try another username and loop
user=$(createLogin)
check_user_exists $user
else
# create user
fi
}
while read line
do
user=$(createLogin)
check_user_exists $user
done