一个命令列表(
list
)是指一条或者多条,以
;
、
&
、
&&
或
||
其中之一分隔开的,以
;
、
&
或者换行结束的管道。
这些列表操作符里,
&&
和
||
具有相同的优先级;接下来是
;
和
&
,优先级也一样。
命令列表里面可能出现用来分隔命令的,一个或多个空行,它们等价与一个分号。如果一条命令以控制字符
&
结尾,Shell 会异步地在一个子 Shell 里执行这条命令。这叫做在
后台
执行命令,这种说法也就是指的异步执行命令。当前的 Shell 不等待命令结束,而且命令的返回值是 0。当作业控制不可用(见[作业控制][job-control]),在没有任何显式重定向的情况下,会重定向自
/dev/null
。
以
;
分隔开的命令会顺序执行;Shell 轮流等待它们结束。命令列表的返回值,是最后一条执行的命令。
「与」和「或」列表,分别是一条或多条用控制操作符
&&
和
||
分隔开的管道。「与」和「或」列表的执行是左结合的。
「与」列表有这样的格式:
command1 && command2
当且仅当第一条命令返回 0(成功),第二条命令才执行。
「或」列表有这样的格式:
command1 || command2
当且仅当第一条命令返回非 0,第二条命令才执行。
「与」和「或」列表的返回值,是最后执行的命令的返回值。