命令的列表

一个命令列表( list )是指一条或者多条,以 ; & && || 其中之一分隔开的,以 ; & 或者换行结束的管道。

这些列表操作符里, && || 具有相同的优先级;接下来是 ; & ,优先级也一样。

命令列表里面可能出现用来分隔命令的,一个或多个空行,它们等价与一个分号。如果一条命令以控制字符 & 结尾,Shell 会异步地在一个子 Shell 里执行这条命令。这叫做在 后台 执行命令,这种说法也就是指的异步执行命令。当前的 Shell 不等待命令结束,而且命令的返回值是 0。当作业控制不可用(见[作业控制][job-control]),在没有任何显式重定向的情况下,会重定向自 /dev/null

; 分隔开的命令会顺序执行;Shell 轮流等待它们结束。命令列表的返回值,是最后一条执行的命令。

「与」和「或」列表,分别是一条或多条用控制操作符 && || 分隔开的管道。「与」和「或」列表的执行是左结合的。

「与」列表有这样的格式:

command1 && command2

当且仅当第一条命令返回 0(成功),第二条命令才执行。

「或」列表有这样的格式:

command1 || command2

当且仅当第一条命令返回非 0,第二条命令才执行。

「与」和「或」列表的返回值,是最后执行的命令的返回值。