shell编程:程序出错继续执行还是出错停止执行?*

原创
2016/07/22 14:26
阅读数 1.7W

shell中每一行执行完之后都会有状态码,下一行命令用$?获得上一行命令的状态码,参考:Shell中的特殊变量$?-查看上一条Shell命令的退出状态码(exit status)

在shell中,默认当某行命令执行出错之后,后面的命令会继续执行,这会导致后面的代码会出现不可预知的错误,所以当我们的shell程序出错时,应该立即停止执行shell程序。那应该怎么处理?最简单粗暴的方式是在shell文件中加上set -e。当执行语句的状态码不为0时,直接退出程序。但是有很多情况是要在出错的情况下继续执行的,比如检测hdfs目录是否存在。不存在就新建一个,这个时候可以先暂时关闭set +e,语句运行完之后,再打开set -e。

set -x #启动"-x"选项
要跟踪的程序段
set +x #关闭"-x"选项

也可以使用别的方式。参考:Shell脚本调试技术    Unix/Linux 脚本中 “set -e” 的作用

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部