如果,那么语句为Bash Init脚本

时间:2012-06-29 19:40:36

标签: bash function if-statement

我试图通过pid获取状态是否正在运行的输出。当我将以下内容添加到脚本中时,它只输出第一个echo。该过程是否已被杀死。我在第一个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
  }

1 个答案:

答案 0 :(得分:1)

[是命令,它是具有必需结束]的“test”命令的别名。 bash中的if语句测试命令的退出状态。在您的情况下,您希望测试管道的退出状态,而不是使用测试。

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

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

if pgrep -f "$APPLICATION.*$SERVICE1"; then
   ...
fi