今天操做的时候遇到一个问题,须要把内容重定向到文件,而后再把文件重命名使用,结果重定向的时候已经抛异常了,下面的天然也会接着出现各类问题。因此,仍是以为一些关键操做要作一些判断或者捕获异常,避免出现更严重的问题。shell
解决办法以下:bash
你写的每个脚本的开始都应该包含set -e。这告诉bash一但有任何一个语句返回非真的值,则退出bash。 使用-e的好处是避免错误滚雪球般的变成严重错误,能尽早的捕获错误。更加可读的版本:set -o errexit 使用-e把你从检查错误中解放出来。若是你忘记了检查,bash会替你作这件事。 不过你也没有办法使用$? 来获取命令执行状态了,由于bash没法得到任何非0的返回值。 你可使用另外一种结构,使用command
if [ "$?"-ne 0]; then echo "command failed"; exit 1; fi " 能够替换成: command || echo "command failed"; exit 1; (这种写法并不严谨,我当时的场景是执行ssh "commond", 因此能够返回退出码后面经过[ #? -eq 0 ]来作判断,若是是在shell中不管成功仍是失败都会exit) 修改以下(谢谢评论的朋友指正) command || (echo "command failed"; exit 1) ; 或者使用: if ! command; then echo "command failed"; exit 1; fi