1

我正在尝试通过 pid 获取状态是否正在运行的输出。当我将以下内容添加到脚本时,它只输出第一个回声。进程是否已被杀死。我在第一个 if 中缺少什么?

  status() {         
          if [  'ps auxww | grep $APPLICATION | grep $SERVICE1 | gawk "{print $2}" | grep -v grep' ]; 
               echo -e $"$SERVICE1 is currently running \n "
          else
               echo -e $"$SERVICE1 is not running \n "
               RETVAL=$?
               echo
          fi
          fi
          return $RETVAL
  }
4

1 回答 1

1

[is 命令是“test”命令的别名,需要end ]。bash 中的if语句测试命令的退出状态。在您的情况下,您想要测试管道的退出状态,而不是使用 test.

if ps auxww | grep $APPLICATION | grep $SERVICE1 | gawk "{print $2}" | grep -v grep; then
   ...
fi

您通常不想以ps这种方式解析 的输出。相反,pgrep如果可用,请使用:

if pgrep -f "$APPLICATION.*$SERVICE1"; then
   ...
fi
于 2012-06-29T19:54:12.883 回答