【问题标题】:Different output when running command in bash script vs terminal在 bash 脚本与终端中运行命令时的不同输出
【发布时间】:2019-04-01 08:53:19
【问题描述】:

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

#!/bin/bash                                                                                                                                                                       
HIPPO=$(ps -a | grep hippo | wc -l)                                                                                                                                                 
echo "$HIPPO"

但是,当我直接从命令提示符运行命令 ps -a | grep hippo | wc -l 时,我得到的输出为 0

阅读ps 上的文档,尤其是-a 标志,我不明白为什么输出不同。

【问题讨论】:

  • 根据时间的不同,ps 可能会或可能不会在其输出中列出grep hippo 进程(并且可能是为运行管道而创建的子shell)。各种事情都会影响时间。尝试改用grep '[h]ippo,因为它不会匹配自己。

标签: bash shell command-line grep command


【解决方案1】:

如何调用您的脚本?如果您用 hippo 命名它,它将计入您的 ps 调用。

【讨论】:

  • 看起来就是这样。而且我猜根据 Gordon Davisson 上面的评论,时间问题是它显示计数为 2 而不是 1 的原因?
  • 是的,我认为其他 +1 是关于时间的。
【解决方案2】:

https://superuser.com/questions/935374/difference-between-and-in-shell-script

当您执行命令替换时,命令会根据上述运行一次。所以我假设,echo 正在选择一个运行该命令的僵尸进程。

【讨论】:

    猜你喜欢
    • 2016-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-05
    • 2014-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多