mvn in bash script if语句

gri*_*era 7 bash maven

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

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

sam*_*hen 21

这是你想要的:

mvn clean
if [ "$?" -ne 0 ]; then
    echo "Maven Clean Unsuccessful!"
    exit 1
fi
Run Code Online (Sandbox Code Playgroud)

说明:

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

当你这样做$(mvn clean),那不是产生一个新的子shell运行mvn clean,然后简单地倾倒,这是输出到所有stdout在子shell运行mvn clean$(...)父外壳使用.


或者,你可以这样做:

mvn clean || { echo "Maven Clean Unsuccessful"; exit 1; }
Run Code Online (Sandbox Code Playgroud)

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


cho*_*oba 7

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

if mvn clean ; then
   echo ok
else
   echo Something went wrong.
   exit 1
fi
Run Code Online (Sandbox Code Playgroud)