Bash Shell错误消息提示

shell 脚本需要详细报告故障。你想在命令出现问题时看到错误消息,但 if 语句更多地只是转移语句的执行流程。

解决方案

一些 shell 程序员的惯用做法是配合使用 || 和命令来输出调试 / 错误消息,如下所示:

cmd || printf "%b" "cmd failed. You're on your own\n"

讨论

减少if数量,&& 告诉 bash 如果第一个表达式为假,则不再评估第二个表达式,与此类似,||告诉 bash 如果第一个表达式为真(成功),则不再评估第二个表达式。和 && 一样,|| 可以追溯到逻辑运算和 C 语言,如果 A OR B 中的表达式 A 为真,则最终结果就为真,无须评估表达式 B。在 bash 中,如果第一个表达式返回 0(成功),则跳过剩下的表达式,继续往下执行。仅当第一个表达式返回非 0 值(命令出错)时,才必须评估第二个表达式中的命令。

shell 使用 0 代表真,非 0 代表假,这正好和其他编程语言相反。在 shell 中判断逻辑表达式的结果时,一定要注意这点。

警告!千万别被下面这条语句骗了。

cmd || printf "%b" "FAILED.\n" ; exit 1

exit 无论如何都不会执行!|| 仅作用于前两个命令。如果只想在 cmd 出错时执行 exit,那么要将其与 printf 分组到一起,以便两者被视为一个单元。语法如下所示:

cmd || { printf "%b" "FAILED.\n" ; exit 1 ; }

注意,最后一个命令必须以分号结尾,闭合花括号与其中的内容之间要用空白字符分隔。具体的讨论参见保存多个命令的输出

酷客网相关文章:

赞(0)

评论 抢沙发

评论前必须登录!