重击:检查返回码时,if语句vs &&&

时间:2019-05-15 19:14:24

标签: bash

我看到通常使用if语句检查返回码:

if [ "${rc}" -ne 0 ]; then
   echo "error"
   exit 1
fi

我还很少看到使用&&进行相同检查的支票:

[ "${rc}" -ne 0 ] && echo "error" && exit 1

除了可读性之外,两者之间是否还有其他区别?一个人比另一个人有好处吗?

1 个答案:

答案 0 :(得分:5)

两者并不相等,尽管使用exit 1的风险很小。首先,echo将执行echo是否成功。第二,exit 1必须成功执行if[ "$rc" -ne 0 ] && { echo "error"; exit 1; } 语句将更准确地“翻译”为

&&

如果要使用abort () { echo "$1" >&2 # error messages go to standard error! exit 1 } [ "$rc" -ne 0 ] && abort "error" 并且具有可读代码,请定义一个函数以产生错误消息并退出:

DECLARE var_month number; IF (INSERTING OR DELETING OR UPDATING) AND var_month <= 1 THEN