次のスクリプトがあります。
#!/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
「並べ替えられたフィールドのみを印刷」を意味します。一緒に見つかったユーザーごとに1行を印刷します。
上記のパイプwc -l
を接続すると、行数、つまり一意のユーザー数が印刷されます。これは-u
GNU拡張ですが、date -d
GNU拡張も使用しているので、ツールのGNUバージョンを使用しているとします。