|
unix环境编程 上面的一个例子。 检查所有人的登录情况
#! /bin/sh
#watchwho: watch who logs in and out
PATH=/bin:/usr/bin
new=/tmp/wwho1.$$
old=/tmp/wwho2.$$
>$old # create an empty file
while :
do
who>$new
diff $old $new
mv $new $old
sleep 60
done | awk '/>/ { $1 = "in: "; printf "%s\n", $0 }
/</ { $1 = "out: "; printf "%s\n", $0 }'
运行后, 总是出不了结果( 第一次运行程序, 会打印所有人的登录情况)
按说, diff $old $new 的结果会输出到标准输出, 然后经由awk判断, 然后输出结果。 但是我运行后, 就是没有结果出来。
把 mv $new $old 和 sleep 60这个注释后, 立马有结果。 但是, 我把 awk 那段改为 sed -n 's/^>/in: /p' 后, 立马输出结果, 也是说, 在done后, 有输出流经过阿。 但是经由awk 怎么就输出不了了。 |
|