Bash 检查用户是否存在,如果存在则将数字添加到用户名

Bash check if user exists, if so add number to the username

如果用户名存在,我必须将数字 2 添加到该用户名,如果该用户名也存在,我必须将数字 3 添加到它,依此类推... (因此,如果 John 存在,程序必须添加 John2,如果他也存在,则必须添加 John3 等。)当然,我添加的每个用户都会被记住。

在 bash 中最短和最简单的方法是什么?

假设users.txt是:

joe
jimmy
foo
jimmy
bar
jimmy

那你就可以用awk了

awk 'cnt[[=11=]]++{[=11=]=[=11=] cnt[[=11=]]-1} 1' users.txt

生成输出:

joe
jimmy
foo
jimmy1
bar
jimmy2

一些有用的部分:

for n in "" {9..11}; do egrep -q "^stefan${n}\b" /etc/passwd && echo "name${n} " || echo "unknown name${n}"; done 
name 
unknown name9
unknown name10
unknown name11

遍历数字,查找(可能生成的)用户名,已知或未知的反应不同,粘合名称和数字。