跳到主要内容

Shell 写程序为用户计算主组数目并显示次数和组名 ?

参考答案:

要为用户计算主组数目并显示次数和组名,你可以使用getent命令在shell脚本中获取用户的组信息,然后进行分析。以下是一个简单的shell脚本示例,它实现了这个功能:

#!/bin/bash

# 检查参数数量
if [ "$#" -ne 1 ]; then
    echo "Usage: $0 <username>"
    exit 1
fi

USERNAME=$1

# 获取用户的主组
PRIMARY_GROUP=$(id -gn "$USERNAME")

# 检查用户是否存在
if [ -z "$PRIMARY_GROUP" ]; then
    echo "User $USERNAME does not exist."
    exit 1
fi

echo "Primary group of $USERNAME is: $PRIMARY_GROUP"

# 计算主组的出现次数(这里其实对于主组来说,次数总是1,因为每个用户只有一个主组)
COUNT=$(getent group | grep -c "^$PRIMARY_GROUP:")
echo "Primary group $PRIMARY_GROUP appears $COUNT times."

这个脚本首先检查是否提供了用户名作为参数。然后,它使用id -gn命令获取用户的主组。接下来,它检查用户是否存在。最后,它计算主组的出现次数并显示结果。

注意,对于主组来说,其实每个用户只有一个主组,所以出现次数总是1。这个脚本主要是为了展示如何使用shell命令进行这样的操作。如果你想要计算用户所属的所有组的数量(包括主组和附加组),你可以稍微修改这个脚本,使用groups命令来获取用户的所有组,并使用循环和计数来实现。

另外,如果你的系统没有getent命令,你可以使用其他方法,如awk/etc/group文件来解析组信息。但是请注意,直接解析/etc/group文件可能需要root权限,并且这种方法可能不如使用getent命令那么健壮和可移植。