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

时间:2015-03-22 01:21:45

标签: bash

需要脚本帮助。该脚本将从文本doc作为参数接收名称列表和分配的组,然后从给定组和用户的名称,随机密码和主目录创建唯一的用户名。我坚持将已分配的组与该组的新用户名进行匹配,并制作一个while循环,用于测试新创建的用户名是否已在系统中,如果没有,则在主目录中添加用户和组。例如。 /家庭/组/用户名。 我做了一个if语句,测试用户是否已经存在,否则添加用户。我想用while循环代替if else。

输入是一个文本文档,其中包含按以下顺序列出的多个名称 最后一个中间组 示例

smith joe t student
barnes tom r manager

脚本将从名字和姓氏中取出第一个字符,并在其中添加三个随机数,以便为列表中的每个名称创建唯一的用户名。我在函数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`

1 个答案:

答案 0 :(得分:0)

改为使用递归函数。

#!/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选项按名称将新用户添加到特定组。