2009-07-12 73 views

回答

5

||几乎是'或'运算符。

在上面的代码示例中,它将首先运行less /tmp/manual,如果它返回的值不是true,它将运行read。如果第一个命令返回一个真值,则由于短路而不执行读取命令。

感谢Michiel:请注意,运算符不是交换性的,因此它不是数学OR。

+3

@MitMaro这是一个挑剔的问题,但是您描述的行为并不等同于逻辑或。一个真正的“或”是可交换的,即(a/b)=(b \/a)。 – 2009-07-12 21:43:00

+0

@Michiel:你的观点非常好! - 我很困惑,因为我的两个命令都是成功的,但只有第一个命令运行。 ---这表明我可以删除我的代码的最后一部分。 – 2009-07-12 22:25:05

3

MitMaro说了些什么。这是一个shell的参数,在这种情况下是/ bin/sh。 (从技术上讲,这不是一个“参数”(这是一个不同的术语),但它是壳的“语法”的一部分。)

有关详细信息,请参阅man page on sh。您要查找的是“列表”部分。

段:

一个OR序列的执行

command1 || command2 

命令2的形式,当且仅当是command1返回非零 退出状态。

AND和OR列表的返回状态是在列表中执行的最后一个 命令的退出状态。