暗无天日

=============>DarkSun的个人博客

bash中if-then与&&的区别

有时候为了方便,我们会把

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部分时要注意一下这方面的差别。