无法在bash脚本中grep命令结果

时间:2017-10-09 09:34:09

标签: linux bash shell grep

早上好,

背景: 如果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:line 12:[!myuser +:Untraceable command

命令的执行没有返回命令的结果,而是返回我的命令的进程号,就像我执行了我的命令的ps aux一样。

如果不清楚,请问,我很难翻译这个问题。

感谢您的回答。

编辑:我已经像这样申请了这个:

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

现在我没有任何错误,但它永远不会进入我的if条件。

1 个答案:

答案 0 :(得分:0)

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

(记住klashxx所示的拼写错误)

您可以检查变量是否为空。

所以不要使用"!",我认为检查ps aux的grepping是否返回空字符串更合适和有效。

请告诉我这是否对您有所帮助。

已编辑:已更正' ['到['

再次编辑:其他用户要知道,如果您需要使用此方法检查进程是否存在,请在-z标志之前附加!以查看它是否为空