在bash脚本和终端中运行命令时的不同输出
当我在bash脚本中运行以下代码时,我收到一个2的输出在bash脚本和终端中运行命令时的不同输出,bash,shell,command-line,grep,command,Bash,Shell,Command Line,Grep,Command,当我在bash脚本中运行以下代码时,我收到一个2的输出 #!/bin/bash HIPPO=$(ps -a | grep hippo | wc -l)
#!/bin/bash
HIPPO=$(ps -a | grep hippo | wc -l)
echo "$HIPPO"
但是,当我直接从命令提示符运行命令ps-a | grep hippo | wc-l时,我得到的输出是0
阅读ps
上的文档,尤其是-a
标志,我不理解为什么输出不同。
当您执行命令替换时,该命令将根据上述命令运行一次。所以我假设,echo正在选择一个运行该命令的僵尸进程。如何调用您的脚本?如果您使用hippo命名它,它将在您的ps调用中计数。根据时间,
ps
可能会或可能不会在其输出中列出grep hippo
进程(也可能是为运行管道而创建的子shell)。各种各样的事情都会影响时机。尝试改用grep'[h]ippo
,因为它本身不匹配。似乎就是这样。根据戈登·戴维森(Gordon Davisson)上面的评论,我猜是因为计时的原因,它显示的计数是2而不是1?是的,我认为对于另一个+1,它是关于计时的。