如何在C++编译出错时终止Bash脚本执行?
解决Bash脚本编译出错后仍执行旧程序的问题
你可以通过两种简单的方式修改脚本,确保makepp编译失败时不运行./mainHeu:
方法一:启用脚本的错误终止模式
在脚本开头加入set -e,它会让脚本在任何命令执行失败(退出状态非0)时立即终止:
set -e makepp ./mainHeu
只要makepp编译出错返回非0退出码,脚本就会直接停止,不会执行后面的./mainHeu。
方法二:显式检查编译命令的退出状态
如果你不想全局启用错误终止,也可以单独检查makepp的执行结果:
makepp # 检查上一个命令的退出码,非0表示失败则退出脚本 if [ $? -ne 0 ]; then exit 1 fi ./mainHeu
或者用更简洁的短路写法:
makepp && ./mainHeu
这种写法只有makepp成功执行(退出码为0)时,才会运行后面的./mainHeu。
补充说明
makepp作为编译工具,编译出错时会自动返回非0的退出状态码,这是绝大多数编译工具的标准行为,所以上面两种方法都能生效。
内容的提问来源于stack exchange,提问作者Samuele
相关产品推荐
相关产品推荐

