shell的逻辑AND,cmd1 && cmd2,它是相反的,对吗?

And*_*510 3 shell logic base return-value

我们知道这&&是合乎逻辑的AND,所以

true && true  => true
false && true => false
Run Code Online (Sandbox Code Playgroud)

当我们在Shell(Bash here)中工作时,成功的命令调用返回0.请问外壳改变0non-zero之前AND操作?或刚反转正常logics

举个例子:

cat file1 && cat file2
Run Code Online (Sandbox Code Playgroud)

file2将是cat-ed唯一file1可能的cat-ed.

Att*_*ila 5

在shell中(包括bash)&&确实意味着逻辑AND.参数&&可以是将根据其返回值进行评估的命令 - 返回值0表示成功(true),其他值表示失败(false).

因此,在C/C++意义上,它是相反的(在C/C++中,它的同类0 = false,其他= true),但从shell的角度看它不是(success = true,fail = false)

更新:根据&&不必涉及执行命令的注释更改说明