后
% xkbset -repeatkeys
% xinput test 14 | grep -m 1 "key release 36"
并保持第二次返回,正如预期的那样,没有任何反应。释放第二次返回后,我得到
key release 36
现在我希望程序立即退出,但它会等待额外的按键——甚至 Shift 也能工作——然后再退出。我想这使得 xinput 产生一条额外的行,但我不明白为什么这是必要的——grep 已经找到了它正在寻找的行。那么为什么不立即退出呢?
附言。答案似乎是正确的,我能够通过这样做得到想要的结果
% xinput test 14 | { grep -m 1 "key release 36" && killall xinput ; }
答案1
grep
可能会在第一场比赛后退出。它xinput
仍在运行:它只在下次尝试输出内容时注意到管道已关闭。
例如,这里只有第一个 pgrep 找到正在运行的grep
进程,但左侧的睡眠仍然发生。
$ ( pgrep grep >&2; echo xxx; pgrep grep >&2; sleep 3; echo yyy ) |grep -m1 xxx
29149
xxx