ユーザーがログインしているかどうかを検索するawkコマンドはありますか?

ユーザーがログインしているかどうかを検索するawkコマンドはありますか?

awkを使用してテキストファイルを操作するためのものなので、誰がオンラインであるかを確認できるかどうかわかりません。次のように、grepコマンドを使用してこれを行う方法を知っています。

 who | grep 'name'

次に、その人がログインしているかどうかを表示します。 awkの構文は次のとおりです。

awk options 'selection _criteria {action }' input-file

awkがファイル操作によく使用されている場合は、awkを使用している人をどのように見つけることができますか?

ベストアンサー1

#! /bin/sh -

is_logged_in() {
  who | USER=$1 awk -v ret=1 '
    $1"" == ENVIRON["USER"]"" {ret = 0; exit}
    END {exit(ret)}'
}

if is_logged_in root; then
  echo root is logged in
fi

これはis_logged_in シェルユーザー名をパラメーターとして使用する関数。環境変数に渡した関数パラメータをこの出力に供給しますwhoawkUSER

コードawkは各レコードを順番に処理します。レコードの最初のフィールドがこの環境変数(ここで""文字列比較を強制するためにオペランドに添付)の値と等しい場合、終了ステータスは0(成功)で終了します。

その後、この関数をステートメントで使用して、ifユーザーがログインしていることを確認できます。

おすすめ記事