shell编程:程序出错继续执行仍是出错中止执行?*

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

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

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

也能够使用别的方式。参考:Shell脚本调试技术    Unix/Linux 脚本中 “set -e” 的做用spa

相关文章
相关标签/搜索