用于识别用户的Bash脚本

用于识别用户的Bash脚本,bash,awk,Bash,Awk,我想我可能用错误的方法解决了这个问题,我真的需要帮忙。 我正在尝试使用awk将报告打印到屏幕上。我想在每个用户旁边列出登录的用户及其全名。我唯一能弄明白的方法是在下面,但它只显示了我自己的信息。我可以将它添加到一个循环中以实现这一点吗?还是我完全错了 这就是我所拥有的: echo "User name" "|" "Full name" echo "--------------------------" echo -n "$USER " ; awk -v user="$USER" -F":"

我想我可能用错误的方法解决了这个问题,我真的需要帮忙。 我正在尝试使用awk将报告打印到屏幕上。我想在每个用户旁边列出登录的用户及其全名。我唯一能弄明白的方法是在下面,但它只显示了我自己的信息。我可以将它添加到一个循环中以实现这一点吗?还是我完全错了

这就是我所拥有的:

echo "User name"  "|"  "Full name"
echo "--------------------------"
echo -n "$USER " ; awk -v user="$USER" -F":" 'user==$1{print$5}' /etc/passwd

$USER
变量只包含您的用户名

您可以通过管道
who
命令获取登录用户的列表

echo "User name"  "|"  "Full name"
echo "--------------------------"
who | while read username rest; do
    echo -n "$username " ; awk -v user="$username" -F":" 'user==$1{print$5}' /etc/passwd
done

每当您发现自己在shell中编写循环来处理文本时,您的解决方案都是错误的

who | awk '
BEGIN { print "User name|Full name\n--------------------------" }
NR==FNR { name[$1] = $5; next }
{ print $1, name[$1] }
' FS=":" /etc/passwd FS=" " -

Shell只是一个调用工具的环境,它有一种语言来对这些调用进行排序。处理文本的shell工具是awk。

环境变量
USER
将显示您的用户名。您可能正在查找该命令,该命令显示当前登录到计算机的用户列表。正是这样,谢谢,我绞尽脑汁想了数小时才找到这样一个简单的小解决方案。