如何检查流是否为空?

如何检查流是否为空?

例如我想执行:

ps x | grep something | grep -v grep | somecommand

我想somecommand仅在有程序运行时才执行。该怎么做?

答案1

您可以使用if。此外,要对命令进行 grep,但要排除 grep 本身,您可以使用以下技巧:

if ps x | grep '[s]omething' ; then
    echo Running.
else
    echo Not running.
fi

答案2

这很简单:

pgrep something && somecommand

pgrep类似于ps | grep something | grep -v grep,更简洁,但控制输出的选项更少。但是,您不必担心会偶然过滤掉实际需要的内容(例如,pgrep agreppina可以工作,但ps x | grep agreppina | grep -v grep实际上不会)。

command1 && command2有点像编程语言中的任何连接词,仅当第一个命令成功时(实际上,如果它返回状态为零),才会执行 command2。

答案3

这是解决方案

ps x | grep something | [[-n $(grep -v grep) ]] && somecommand

  • -n将检查字符串是否无效的或不
  • &&操作员

相关内容