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
シェルユーザー名をパラメーターとして使用する関数。環境変数に渡した関数パラメータをこの出力に供給しますwho
。awk
USER
コードawk
は各レコードを順番に処理します。レコードの最初のフィールドがこの環境変数(ここで""
文字列比較を強制するためにオペランドに添付)の値と等しい場合、終了ステータスは0(成功)で終了します。
その後、この関数をステートメントで使用して、if
ユーザーがログインしていることを確認できます。