Bash 使用while循环检查用户是否已存在的脚本

Bash 使用while循环检查用户是否已存在的脚本,bash,Bash,需要脚本帮助。该脚本将从文本文档中获取名称和分配组的列表作为参数,然后从这些名称、随机密码和给定组和用户的主目录中创建唯一的用户名。我一直坚持将分配的组与该组的新用户名进行匹配,并进行while循环,该循环将测试新创建的用户名是否已经在系统中,如果没有,则将用户和组添加到主目录中。例如/主页/组/用户名。 我已经做了一个if语句,它将测试用户是否已经存在,否则就添加用户。我想用while循环而不是if-else来实现这一点 输入为文本文档,多个名称按以下顺序列出 最后一组 例如 脚本将从名字和姓

需要脚本帮助。该脚本将从文本文档中获取名称和分配组的列表作为参数,然后从这些名称、随机密码和给定组和用户的主目录中创建唯一的用户名。我一直坚持将分配的组与该组的新用户名进行匹配,并进行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