maven in bash script if语句

时间:2012-11-30 19:20:57

标签: bash maven

我想在bash脚本中运行命令mvn clean。但我想把它放在if语句中。如果clean运行不正常,我想用echo语句退出bash脚本。 以下是导致问题的代码:     如果[mvn clean];然后

我尝试将$(mvn clean)放在if语句中,但是有太多的参数说终端。有谁知道这是否可能?谢谢!

3 个答案:

答案 0 :(得分:21)

这是你想要的:

mvn clean
if [ "$?" -ne 0 ]; then
    echo "Maven Clean Unsuccessful!"
    exit 1
fi

<强>解释

  • $?special shell variable,其中包含最近立即执行的命令的退出代码(无论是否成功终止)。
  • -netest builtin [的选项。它代表“不平等”。所以我们在这里测试mvn clean的退出代码是否不等于零。
  • echo "Maven Clean Unsucccessful!" - 如果是这种情况,那么我们输出一些指示性消息,并使用错误的退出代码退出脚本本身。

当您执行$(mvn clean)时,它会生成一个新的子shell以运行mvn clean,然后只需将运行stdout的子shell中输出的所有内容转储到mvn clean其中$(...)在父shell中使用。


或者,您可以这样做:

mvn clean || { echo "Maven Clean Unsuccessful"; exit 1; }

这只是做同样事情的简写语法糖。

答案 1 :(得分:7)

检查退出状态不需要括号:

if mvn clean ; then
   echo ok
else
   echo Something went wrong.
   exit 1
fi

答案 2 :(得分:0)

我更喜欢使用变量来捕获返回码。提高了可读性并允许运行其他命令,而不必担心破坏返回代码值:

mvn clean

MVN_RTN=$?
if [ "${MVN_RTN}" -ne 0 ]; then
   echo "Maven returned failure code ${MVN_RTN}"
   exit 1
fi