3.2.2 管道
管道是由控制操作符'|'或'|&'分隔开的一组简单命令的序列。
管道的格式
[time [-p]] [!] command1 [ [| or |&] command2 …]
在管道中的每个命令的输出是通过管道连接到下一个命令的输入。也就是说,每个命令读取前一个命令的输出。此连接在该命令指定的重定向之前执行。
如果使用'|&',则command1的标准错误通过管道连接到command2的标准输入。它是 2>&1 |的简写。这个隐含的标准错误重定向在其他重定向之后执行。
保留字time,会在管道完成后,打印时间统计数据。目前的统计数据包括整个管道的执行时间,以及命令执行消耗的用户时间和系统时间。 -p选项指定了POSIX输出格式。当shell在POSIX模式(参见bash POSIX模式),如果下一个标记以一个“ - ”开始时,它不识别time为保留字。 TIMEFORMAT变量可以设置为一个字符串,以设置显示时间的格式。可用的格式的说明(见 Bash变量)。time保留字允许记录shell的内建命令,shell函数和管道的计时。外部命令time不能容易地达到这些计时的目的。
当shell在POSIX模式(参见bash POSIX模式),time后面可能会跟着一个换行符。在这种情况下,shell显示由shell和它的子进程消耗的总的用户和系统时间。变量TIMEFORMAT被用来指定时间信息的格式。
如果管道不是异步执行的(见列表),shell会等待管道中的所有命令完成。
在管道中的每个命令在其自己的子shell中执行(见命令执行环境)。管道的退出状态是在管道中的最后一个命令的退出状态,除非pipefail选项被启用(参见内建命令set)。如果启用了pipefail,管道的返回值是最后一个(最右边)的命令的退出状态,可能是一个非零的值,或者,如果所有命令成功完成,则是零值。如果保留字'!'位于管道之前,则退出状态是上述的退出状态的逻辑否。 shell等待管道中的所有命令终止后才返回一个值。
3.2.3 命令列表
命令列表是由一个或多个管道组成的序列,它们被这些分隔符号“;“,”&“,”&&“,”| |“分隔,并且由一个';','&',或换行符终止。
在这些操作符中,“&&”和“| |”具有相同的优先级,然后';'和'&',具有相同的优先级。
可能会出现一个或多个换行符来分隔命令列表,它们相当于分号。
如果命令终止于控制操作符'&',shell将在子shell中异步执行这个命令。这被称为在后台执行命令。 shell不会等待命令完成,返回值是0(真)。当作业控制没有被激活时(见作业控制),异步命令的标准输入,在没有指定明确的重定向时,将被重定向到/dev/null。
“;”分隔开的命令将按顺序执行,shell会等待每个命令都终止。返回状态是最后执行的命令的退出状态。
AND和OR命令列表,是使用控制操作符“&&”和“| |”分隔的一个或多个管道组成的序列。 AND和OR命令列表按左结合执行。
AND命令列表的形式
command1 && command2
command2,当且仅当,command1返回的退出状态是零的情况下才执行。
OR命令列表的形式
command1 || command2
command2,当且仅当,command1返回的退出状态非零的情况下才执行。
AND和OR命令列表的返回状态,是命令列表中的最后一个执行的命令的退出状态。
原文链接:http://www.gnu.org/software/bash/manual/bash.html#Pipelines
分享到:
相关推荐
Bash shell编程参考手册,Linux编程必备。
Bash参考手册.pdf
Bash参考手册(Linux Shell),简单的页面中,有BASH的基本用法,非常适合作为手册来参考。
高级bash shell手册 我见过的最好的bash shell 编程手册 推荐!
bash 手册bash 手册bash 手册bash 手册bash 手册bash 手册bash 手册bash 手册bash 手册
bash官方手册/Bash Reference Manual
BASH中文手册.pdfBASH中文手册.pdf
Bash中文手册,适合Linux shell入门级使用!
bash 入门经典 不可不看哦 bash 入门经典 不可不看哦 bash 入门经典 不可不看哦
linux shell教程,很不错,强烈推荐
bash学习手册 文字版 带目录,对于linuxer和运维工程师是不错的参考
这本使用大量的例子详细地介绍了Bash的语法,各种技巧,调试等等的技术,以循序渐进的学习方式,让你了解Bash的所有特性,在书中还有许多练习可以引导你思考,以得到更深入的知识。无论你是新手还是老手,或是使用...
linux平台的bash shell开发帮助文档(手册),英文版,版本4.2。日常开发shell翻阅, 章节如下: Definitions:: Some definitions used i n the rest of this manual. Basic Shell Features:: The shell "building ...
1.概述 (SYNOPSIS) ...3.描述 (DESCRIPTION) 4.选项 (OPTIONS) 5.参数 (ARGUMENTS) 6.启动 (INVOCATION) 7.定义 (DEFINITIONS) 8.保留字 ("RESERVED WORDS") 9.注释 (COMMENTS) 10.引用 (QOUTING) ...
鸟哥的BASH Shell编程手册
译者序 <br>毫无疑问,UNIX/Linux最重要的软件之一就是shell,目前最流行的shell被称为Bash(Bourne Again Shell),几乎所有的Linux和绝大部分的UNIX都可以使用Bash。作为系统与用户之间的交互接口,shell几乎是你...
The GNU Bash Reference Manual, for Bash, Version 4.1
linux脚本bash官方手册,最官方的描述。
bash shell
毫无疑问,UNIX/Linux 最重要的软件之一就是shell,目前最流行的shell 被称为Bash(Bourne Again Shell),几乎所有的Linux 和绝大部分的UNIX 都可以使用Bash。作为系统与用户之间 的交互接口,shell 几乎是你在UNIX ...