![如何检查流是否为空?](https://linux22.com/image/963231/%E5%A6%82%E4%BD%95%E6%A3%80%E6%9F%A5%E6%B5%81%E6%98%AF%E5%90%A6%E4%B8%BA%E7%A9%BA%EF%BC%9F.png)
例如我想执行:
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将检查字符串是否无效的或不
- &&是和操作员