2017-10-09 220 views
0

早安,不能grep命令resultats在bash腳本

語境: 我想,如果一個python腳本運行檢查每分鐘。在我的cron中,我調用了一個腳本。腳本的目標是檢查流程是否正在運行。

我的腳本:

#!/bin/bash 
DIR="path/to/directory" 
CMD="python3 -u $DIR/script.py -arg1 $DIR/arg1 -arg2 $DIR/arg2 -arg3 $DIR/arg3" 

if [ ! $(ps aux | grep 'my_pattern' | grep -v 'color')] 
then 
    echo "Success" 
    "$CMD" > /dev/null 
fi 

有了這個劇本我要到grep過程和逆grep的排除彩色處理。如果進程正在運行,命令(ps aux | grep'my_pattern'| grep -v'color')會​​返回給我一些事情,如果沒有,則該命令不會返回任何內容。

的錯誤是./script.sh:第12行:myuser的+:無法聯絡命令

命令的執行沒有返回我的命令的結果,但我的命令的進程號一樣,如果我做了我命令的輔助。

如果不明確,請問,我很難翻譯這個問題。

謝謝你的回答。

編輯:我套用ocndition這樣的:

if [[ -z $(ps aux | grep 'my_pattern' | grep -v 'color') ]] 

現在我沒有任何錯誤,但它從來沒有在我的if條件進入。

+3

你有**錯字**:''顏色')]'應該''顏色')]' – klashxx

回答

0

隨着

if [[ -z $(ps aux | grep 'my_pattern' | grep -v 'color') ]]

(介意錯字如圖klashxx)

您可以檢查是否變量爲空。

因此,不是使用「!」,我認爲檢查ps aux的grepping是否返回空字符串更合適有效。

讓我知道這是否幫助你。

編輯:糾正「[」到「[」

EDITED同樣對於其他用戶知道,如果u需要檢查的過程是否存在等用這種方法-z標誌來判斷是否追加前!它不是空的

+0

謝謝你的回答。 你的回答對我很好,但我有一個新的問題(這很好)。 ./script.sh:第12行:[:太多的參數 – Thibaud

+0

我的錯誤,它的'[['而不是[...和]]而不是] –

+0

別擔心,我已經試過了在你回答之後。 現在我沒有任何錯誤,但它從來沒有進入我的條件... 非常感謝 – Thibaud