有时候为了方便,我们会把
if condition;then
statement
fi
简写成
condition && statement
但是这两种写法其实并不完全等价,最大的不同点在于它们的返回值是不同的。我们可以比较一下:
if [ "1" = "0" ];then
:
fi
echo "if 语句返回值: $?"
[ "1" = "0" ] && statement
echo "&& 语句返回值: $?"
if 语句返回值: 0
&& 语句返回值: 1
因此,当脚本开启 errexit 或者在写 travis-ci 的 script 部分时要注意一下这方面的差别。

