2017-05-29 154 views
1

我需要一个.sh文件,如果我的python服务没有运行,它将回显0。我知道pgrep是我想要使用的命令,但我使用它的错误。在if语句中使用pgrep命令

if [ [ ! $(pgrep -f service.py) ] ]; then 
    echo 0 
fi 

是什么,我在网上找到的,我不断收到错误

./test_if_running.sh: line 3: syntax error near unexpected token `fi' 
./test_if_running.sh: line 3: `fi;' 

当我键入

./test_if_running.sh 
+0

plz向我们展示您的最佳产品。是它:#!bin/bash? – TheoB

回答

3

这是一个有点简单,但为什么不直接打印NOT'退出代码,如下所示:

! pgrep -f service.py &> /dev/null ; echo $? 

作为奖励,它将打印1如果服务运行。

+0

当我这样做时,它会打印一串数字,然后是1.是否有办法删除数字? – BaleineBleue

+0

@ZachMozel,是的,请参阅修订后的答案。 – agc

+0

哇,非常感谢你! :) – BaleineBleue

2

代码中的问题是嵌套的[ ... ]。另外,正如@agc指出的那样,我们需要检查的是pgrep的退出代码,而不是其输出。因此,编写if的正确方法是:

if ! pgrep -f service.py &> /dev/null 2>&1; then 
    # service.py is not running 
fi