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

时间:2012-03-29 15:44:19

标签: shell logic return-value base

我们知道&&表示逻辑AND,因此:

true && true  => true
false && true => false

当我们在 Shell (Bash here)中工作时,成功的命令调用返回0。在0操作之前,shell是否会将non-zero更改为AND?或者 Shell 只是反转正常的logics

举个例子:

cat file1 && cat file2
仅当file2可以为cat-ed时,

file1才会为cat-ed

2 个答案:

答案 0 :(得分:5)

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

所以在C / C ++意义上它是颠倒的(在C / C ++中,它的同类0 = false,其他= true),但是从shell的角度看它不是(success = true,fail = false)

更新:根据&&不一定涉及执行命令的评论更改说明

答案 1 :(得分:1)

在Bash中,逻辑true表示为0,而逻辑false表示为非零值。这允许在逻辑操作中使用命令的退出值。

您可以浏览documentation on bash operators

了解更多信息

一个common idiom是使用&&链接命令,这样如果链中的任何命令失败,则不执行以下命令:

cmd1 && cmd2 && cmd3