||意思是在.screenrc?
问题描述:
命令基于Rampion's command||意思是在.screenrc?
screen /bin/sh -c '/usr/bin/man `cat "[email protected]"` > /tmp/manual | less /tmp/manual || read'
|| read
并不意味着在命令或。 read
似乎是一个内置的命令,我没有在我的OS X手册中找到解释。
||
在命令中的含义是什么?
答
||
几乎是'或'运算符。
在上面的代码示例中,它将首先运行less /tmp/manual
,如果它返回的值不是true,它将运行read
。如果第一个命令返回一个真值,则由于短路而不执行读取命令。
感谢Michiel:请注意,运算符不是交换性的,因此它不是数学OR。
答
MitMaro说了些什么。这是一个shell的参数,在这种情况下是/ bin/sh。 (从技术上讲,这不是一个“参数”(这是一个不同的术语),但它是壳的“语法”的一部分。)
有关详细信息,请参阅man page on sh。您要查找的是“列表”部分。
段:
一个OR序列的执行
command1 || command2
命令2的形式,当且仅当是command1返回非零 退出状态。
AND和OR列表的返回状态是在列表中执行的最后一个 命令的退出状态。
@MitMaro这是一个挑剔的问题,但是您描述的行为并不等同于逻辑或。一个真正的“或”是可交换的,即(a/b)=(b \/a)。 – 2009-07-12 21:43:00
@Michiel:你的观点非常好! - 我很困惑,因为我的两个命令都是成功的,但只有第一个命令运行。 ---这表明我可以删除我的代码的最后一部分。 – 2009-07-12 22:25:05