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

Linux Bash检查用户是否存在,如果存在,则在用户名中添加数字,linux,bash,linux-mint,Linux,Bash,Linux Mint,如果用户名存在,我必须将数字2添加到该用户名中,如果该用户名也存在,我必须将数字3添加到该用户名中,依此类推。。。 (因此,如果John存在,则程序必须添加John2,如果他也存在,则必须添加John3等)。当然,我添加的每个用户都会被记住 在bash中,最短和最简单的方法是什么?假设users.txt是: joe jimmy foo jimmy bar jimmy 然后你可以用awk awk 'cnt[$0]++{$0=$0 cnt[$0]-1} 1' users.txt 要产生输出: j

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


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

假设
users.txt
是:

joe
jimmy
foo
jimmy
bar
jimmy
然后你可以用awk

awk 'cnt[$0]++{$0=$0 cnt[$0]-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

迭代数字,查找(可能生成的)用户名,如果已知或未知,则做出不同的反应,粘合名称和数字。

目标是在问题中添加一些自己的代码,以至少显示您自己为解决此问题所做的研究。@Cyrus我尝试创建一个包含所有名称的文本文件,然后与grep进行检查。但是这样做有太多的障碍,所以我在这里问。你不知道如何在bash中计数,如何发现,如果用户名存在,如何构建循环,如何粘合名称和数字,或者如何将这些原子操作组合到函数/程序中吗?如果用户存在,那么user0和user1是什么呢?@userunknown我知道,尽管我对bash的了解仍然非常基础。我在这里寻找的是最好的解决方案。如果我用我的知识按我自己的方式去做,那将是非常混乱的。用户0和用户1永远不会被添加,如果用户存在,下一个要添加的是用户2,然后是用户3等。所以现在我们有3个相互冲突的目标:最短、最简单和最佳解决方案。很少有重叠。最短的通常是相当神秘的。最好的解决方案是非常开放的意见。最简单的取决于你带来的知识。我要说的是,一个好的解决方案是容错的、用户友好的,并且有很好的文档记录,所以肯定不是最短的解决方案,也不是最简单的解决方案。