Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在bash脚本和终端中运行命令时的不同输出_Bash_Shell_Command Line_Grep_Command - Fatal编程技术网

在bash脚本和终端中运行命令时的不同输出

在bash脚本和终端中运行命令时的不同输出,bash,shell,command-line,grep,command,Bash,Shell,Command Line,Grep,Command,当我在bash脚本中运行以下代码时,我收到一个2的输出 #!/bin/bash HIPPO=$(ps -a | grep hippo | wc -l)

当我在bash脚本中运行以下代码时,我收到一个2的输出

#!/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,它是关于计时的。