Linux 在if语句中使用pgrep命令

Linux 在if语句中使用pgrep命令,linux,bash,sh,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;' 我

我需要有一个.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

这有点简单,但为什么不打印一个not'd exit code,如下所示:

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

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

这有点简单,但为什么不只打印一个未退出代码,如下所示:

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

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

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


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


请给我们看看你的顶线。是:!bin/bash?请给我们看一下你的顶线。是:!bin/bash?当我这样做时,它会打印一组数字,然后是1。有什么方法可以删除这些数字吗?@ZachMozel,是的,请参阅修改后的答案。当我这样做时,它会打印一组数字,然后打印1。“有没有办法删除这些数字?”ZachMozel,是的,请看修改后的答案。