$ ps ax | grep 6557
#=> 6582 s003 S+ 0:00.01 grep 6557
但是使用活动监视器快速检查,没有 pid 为 6557 的进程。并且网上的所有内容都说当没有匹配时 grep 应该返回 0。
答案1
比赛如下:
$ ps ax | grep 6557
6582 s003 S+ 0:00.01 grep 6557
^^^^ (found it!)
grep
正在检查行中的所有内容,包括命令和参数,并且6557
是您给出的参数grep
,因此它会找到自己的进程。
更严格的正则表达式可以修复这种特殊情况: ^
表示行的开始,并\ \*
匹配任意数量的前导空格,因此这只会在行的最开头找到匹配项:
$ ps ax | grep ^\ \*6557