If,Then用于Bash Init脚本的语句
我试图通过pid获取状态是否正在运行的输出。当我将以下内容添加到脚本中时,它只输出第一个回显。进程是否已终止。我在第一个if中遗漏了什么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
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
必须是冗余的。另外,请参见。