If,Then用于Bash Init脚本的语句

If,Then用于Bash Init脚本的语句,bash,function,if-statement,Bash,Function,If Statement,我试图通过pid获取状态是否正在运行的输出。当我将以下内容添加到脚本中时,它只输出第一个回显。进程是否已终止。我在第一个if中遗漏了什么 status() { if [ 'ps auxww | grep $APPLICATION | grep $SERVICE1 | gawk "{print $2}" | grep -v grep' ]; echo -e $"$SERVICE1 is currently running

我试图通过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
  }

[
是命令,它是“test”命令的别名,具有必需的结尾
]
。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

[
是命令,它是“test”命令的别名,具有必需的结尾
]
。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

第二个
fi
必须是冗余的。另外,请参见。第二个
fi
必须是冗余的。另外,请参见。