我使用 Maven 构建应用程序。在构建应用程序后,我在脚本中启动应用程序服务器。问题是,如果构建不成功,应用程序服务器无论如何都会启动。
如果我执行(使用无法编译的错误版本)
mvn compile
echo "$?"
if [ $? != 0 ]; then
echo "is not 0"
else
echo "is 0"
fi
输出是
1
is 0
如何让 if 返回不为 0?
答案1
首先,您必须$?
尽快保存 的内容,因为每次运行命令都会覆盖其内容。 在您的情况下,语句$?
中的if
是前一个 的退出状态echo
,而不是 的退出状态mvn
。
bash
接下来,对于(and )中的算术比较,sh
您必须使用-ne
for不等于。
因此我建议:
mvn compile
status="$?"
echo "$status"
if [ $status -ne 0 ]; then
echo "is not 0"
else
echo "is 0"
fi
但可以更优雅地使用
if ! mvn compile; then
echo "is not 0"
else
echo "is 0"
fi