我不确定 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
来检查用户是否登录。
答案2
只是使用 awk 和外部命令的可能方法之一的示例:
is_logged($1) { print $1, "is present!"}
function is_logged(x,a){ ## a local var
"who|grep -w " x | getline a
return a
}
进而:
$ awk -f test
abc
Darunia
-->
Darunia is present!