出现错误时如何停止执行 bash 脚本?(如果有问题)

出现错误时如何停止执行 bash 脚本?(如果有问题)

我使用 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您必须使用-nefor不等于

因此我建议:

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

相关内容