微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何让我的 bash 脚本自动为新用户分配唯一的用户名?

如何解决如何让我的 bash 脚本自动为新用户分配唯一的用户名?

我是一名初学者,正在编写旨在创建新用户的 bash 脚本。它询问用户是创建还是删除用户。创建时,它会询问有多少,然后用户添加用户名“user1”、“user2”等,并在他们的主目录中添加一个欢迎文件。我已经这样做了,循环正在运行,但它不会重复,因为它似乎将 id 整数与其需要创建的用户数量混淆了。换句话说,如果我首先使用此脚本创建 user1 和 user2,然后再次运行它以创建 1 或 2 个以上,它将以“user1 已存在”或“user2 已存在”作为响应,并且不会创建两个新的帐户。如果我要求它创建 3 个帐户,它将创建“user3”,但不会创建其他任何内容

我需要它做的是看到user1和2被取了,然后给用户名加1,然后自动分配'user3'和'user4'给接下来创建的两个账号,依此类推。我创建用户的循环是这样的:

if [[ $NUMBER -lt 20 && $ACTION == "create" ]]
then
        until [[ $NUMBER -eq 0 ]]
        do
           i=$(($i+1))
           USERNAM="user$i"
           useradd -s /usr/bin/bash -m $USERNAM;
           cat <<-EOF> /home/$USERNAM/welcome.txt
           Welcome to your new Linux account!
EOF
           let NUMBER=$NUMBER-1;
           done;
fi

这可能不是实现这一目标的最干净的方法,但它似乎有效。我尝试了几种不同的方法来让它建立在以前创建的用户名上,而不是试图覆盖旧的用户名。这是我目前的尝试:

if id -u "$USERNAME" >/dev/null 2>&1;
then
        until [[ $NUMBER -eq 0 ]]
        do 
        i=$(($i++))
        useradd...

这个循环的其余部分与第一个相同。这显然行不通。谁能告诉我如何编写这个脚本,让它自动为它创建的任何新帐户的现有用户名 +1?

解决方法

再绕一个圈

           i=$(($i+1))
           USERNAM="user$i"

跳过现有用户:

          while
            i=$(($i+1))
            USERNAM="user$i"
            id $USERNAM
          do :
          done

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。