我想在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变量,它包含最近最近执行的命令的退出代码(无论是否成功终止).-ne是test 内置的 一个选项[.它代表"不平等".所以这里我们测试退出代码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)
这只是做同样事情的简写语法糖.
检查退出状态不需要括号:
if mvn clean ; then
echo ok
else
echo Something went wrong.
exit 1
fi
Run Code Online (Sandbox Code Playgroud)