问题:
你期望你的脚本显示尽量多的错误提示信息。你期望在某个命令失败的时候看到错误信息,不过你不希望改变原有的脚本流程(ps.增加if判断)
解决方案:
shell脚本程序员的一个惯用方法是使用'||'分隔命令和调试或错误信息,下面是一个例子:
cmd || printf "%b" "cmd failed. You're on your own/n"
讨论:
跟'&&'类似,'||'告诉shell在第一个命令执行成功的时候就不执行第二个表达式。'||'跟c语言中的逻辑运算是类似的—A or B。不过shell脚本汇总,当地一个命令返回0(i.e.,成功)的时候就继续,只有当第一个命令返回非零值的时候,第二部分才会执行。
注意,不要被下面的形式猕猴:
cmd || printf "%b" "FAILED./n" ; exit 1
exit在两种情况下都会被执行。这个OR只是在'||'分隔的两个命令之间。如果你期望只有出错的时候退出,那么要将后面这两个语句用大括号包起来,如下:
cmd || { printf "%b" "FAILED./n" ; exit 1 ; }
由于bash的语法,exit后面的这个分号是必须的,并且最后的大括号必须使用空格分隔。