and/&&和or/||和not/!是相同的,除了运算符优先级以及是否可以换行之外。
想象:
echo 1 || echo 2; and echo 3
Run Code Online (Sandbox Code Playgroud)
首先绑定||,所以echo 1 || echo 2被认为是一回事。它打印“1”,成功,因此它跳过打印“2”,然后因为||总体上成功打印“3”。
尽管
echo 1; or echo 2 && echo 3
Run Code Online (Sandbox Code Playgroud)
将仅打印“1”。echo 1成功,所以其余的都被忽略。
还有“;” for ; andand; or可以用换行符替换,而&&and||不能放在新行上(不转义上一行的末尾):
# valid
echo 1
and echo 2
# invalid
echo 1
&& echo 2
# valid - note the `\` is the last thing on the line
echo 1 \
&& echo 2
Run Code Online (Sandbox Code Playgroud)
除了这些事情(以及任何错误)之外,这些都是相同的。