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

How do I get my bash script to assign unique usernames automatically to new users?

我是初学者,正在编写旨在创建新用户的 bash 脚本。它询问用户是创建还是删除用户。创建时,它询问有多少,然后使用用户名 'user1'、'user2' 等用户添加用户,并在他们的主目录中添加一个欢迎文件。我已经做到了,循环正在运行,但它不会重复,因为它似乎混淆了 id 整数和它需要创建的用户数。换句话说,如果我先用这个脚本创建 user1 和 user2,然后 运行 再次创建 1 或 2 个,它将以 'user1 already exists' 或 'user2 already exists' 响应并且它不会'创建两个新帐户。如果我要求它创建 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