我有以下脚本。
#!/bin/bash
#Solution script1
who
date +"Today %d %B, there are $# users logged in onto the system"
在后台user1
已登录tty2
和tty3
并root
已登录pts/0
和tty1
。那么答案应该是
今天10月22日,有2个用户登录系统。
答案1
只需解析以下输出who
:
#!/usr/bin/env bash
num=$(who | sort -uk1,1 | wc -l)
date +"Today %d %B, there are $num users logged in onto the system"
解释
sort -uk1,1
:-k1,1
意思是“在第一个字段上排序并且仅有的在第一个字段上”。这-u
意味着“仅打印唯一的排序字段”。它们一起将为找到的每个用户打印一行。
将上面的内容通过管道连接wc -l
将打印行数,即唯一用户的数量。请注意,这-u
是一个 GNU 扩展,但由于您使用的date -d
也是 GNU 扩展,因此我假设您正在使用该工具的 GNU 版本。