问题:
前面的问题,判断一个命令是否成功执行,如果每个命令都有一个if语句去判断,你会发现你的脚本很难阅读。那么思考一下,如果每个命令都要检查上个命令的返回值,是不是有其他简单的方案呢?
解决方案:
使用bash提供的条件判断操作符'&&'
$ cd mytmp && rm *
讨论:
用'&&'分隔的两个命令,首先执行第一个,当第一个成功执行之后才会执行第二个(exit status 为0)。这跟下面的语句是相同的:
cd mytmp
if (( $? )); then rm * ; fi
如果您有c语言的经验,会发现bash提供的这个功能同c语言中的逻辑与运算是相同的。
如果您想完全的检查所有的错误而不是每次提供if来进行判断,可以通过-e选项设定bash,使其遇到任何命令失败的时候就退出执行脚本。
set -e
cd mytmp
rm *
注意,-e会导致bash在遇到任何命令失败的时候退出。在交互方式下使用bash,这种方法不推荐,会导致您的shell窗口关闭。