2017-05-29 152 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