我想在 bash 脚本中运行命令 mvn clean 。但我想把它放在 if 语句中。如果 clean 无法正常运行,我想使用 echo 语句退出 bash 脚本。
这是导致问题的代码:
如果 [ mvn clean ];然后
我尝试将 $(mvn clean) 放入 if 语句中,但终端显示参数太多。有谁知道这是否可能?谢谢!
这就是你想要的:
mvn clean
if [ "$?" -ne 0 ]; then
echo "Maven Clean Unsuccessful!"
exit 1
fi
解释:
-
$?
is a 特殊的 shell 变量 http://unixhelp.ed.ac.uk/scrpt/scrpt2.2.2.html包含最近执行的命令的退出代码(无论是否成功终止)。
-
-ne
是一个选项test
builtin http://www.gnu.org/software/bash/manual/html_node/Bourne-Shell-Builtins.html#Bourne-Shell-Builtins [
。它代表“不等于”。所以在这里我们测试退出代码是否来自mvn clean
不等于零。
-
echo "Maven Clean Unsucccessful!"
- 如果是这种情况,那么我们会输出一些指示性消息,并使用错误的退出代码退出脚本本身。
当你这样做时$(mvn clean)
,这会生成一个新的子 shell 来运行mvn clean
,然后简单地将输出的所有内容转储到stdout
在该子 shell 中运行mvn clean
去哪里$(...)
在父 shell 中使用。
或者, 你可以做:
mvn clean || { echo "Maven Clean Unsuccessful"; exit 1; }
这只是做同样事情的简写语法糖。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)