2017-10-09 224 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