我们知道&&
表示逻辑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
。
答案 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