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” 的作用