如何使用Bash检查UID是否唯一?

如何使用Bash检查UID是否唯一?,bash,comparison,Bash,Comparison,我正在尝试执行一个简单的bash脚本来检查/etc/passwd中是否有唯一的UID。 我已经编写了一个脚本来显示所有UID,但是我不知道如何比较它们并返回非唯一的UID(如果存在) 这是我写的剧本: #!/bin/bash passwd="$(cat /etc/passwd)" while read -r line; do IFS=':' read -ra arrayPasswd <<< "$line" echo ${arrayPasswd[2]} done

我正在尝试执行一个简单的bash脚本来检查/etc/passwd中是否有唯一的UID。 我已经编写了一个脚本来显示所有UID,但是我不知道如何比较它们并返回非唯一的UID(如果存在)

这是我写的剧本:

#!/bin/bash
passwd="$(cat /etc/passwd)"
while read -r line; do
    IFS=':' read -ra arrayPasswd <<< "$line"
    echo ${arrayPasswd[2]}
done <<< "$passwd"

如果存在唯一的UID,我如何比较它们并返回非唯一的UID?

如果您有一个输出所有UID的脚本,您可以使用sort和uniq程序来获得所需的结果:

$your script | sort | uniq-d


uniq程序获取一些行并删除连续的重复。标志-d使其仅输出重复项并删除唯一项。您需要先使用sort来连续进行任何重复。

如果您有一个输出所有UID的脚本,您可以使用sort和uniq程序来获得所需的结果:

$your script | sort | uniq-d

uniq程序获取一些行并删除连续的重复。标志-d使其仅输出重复项并删除唯一项。您需要先使用sort进行连续重复。

使用awk:

$ awk -F: 'a[$3]++==1 { print $3 }' /etc/passwd
说明:

在关联数组a.k.a.字典中,记录UID的出现次数

如果有重复的UID,请使用awk打印。

$ awk -F: 'a[$3]++==1 { print $3 }' /etc/passwd
说明:

在关联数组a.k.a.字典中,记录UID的出现次数


如果有重复的UID,请打印。

哦,是的,为什么我忘记了。。。多谢各位@哦,这是堆栈溢出的要求吗?我是新来的,所以我不知道这是什么,在你的帖子发布15分钟之前你不能给出答案哦,是的,为什么我忘了这个。。。多谢各位@哦,这是堆栈溢出的要求吗?我是新来的,所以我不知道这是什么,在你的帖子发布15分钟之前,你不能给出答案