Bash脚本有时不起作用

时间:2018-01-31 18:15:08

标签: bash

好的,所以我对以下代码有一个奇怪的问题:

who > tmp
cat tmp | awk '{print $1}' | sort | uniq > tmp
ps aux | grep -Fvf tmp

应该列出此时未登录的所有用户的进程。问题是它有时是有效的,有时却没有,我不知道是什么原因造成的。我可以输入完全相同的命令,我得到2个不同的结果。我已将问题缩小到第2行> tmp重定向,它保存正确的用户列表或完全擦除文件,我不知道为什么会发生。

PS。我知道这可能不适合完成任务,但这是我在有限的时间内提出来的。

1 个答案:

答案 0 :(得分:1)

这可能是一个时间问题:您正在读取并截断同一管道中的文件。

简单的解决方案是根本不使用临时文件:

ps aux | grep -Fvf <(who | awk '{print $1}' | sort -u)