在if语句中使用pgrep命令

时间:2017-05-29 04:40:15

标签: linux bash sh

我需要一个.sh文件,如果我的python服务没有运行,它将回显0。我知道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

2 个答案:

答案 0 :(得分:3)

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

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

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

答案 1 :(得分:2)

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

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