(bash.info) Pipelines
Info Catalog
(bash.info) Simple Commands
(bash.info) Shell Commands
(bash.info) Lists
3.2.2 Pipelines
---------------
A `pipeline' is a sequence of simple commands separated by one of the
control operators `|' or `|&'.
The format for a pipeline is
[time [-p]] [!] COMMAND1 [ | or |& COMMAND2 ] ...
The output of each command in the pipeline is connected via a pipe to
the input of the next command. That is, each command reads the
previous command's output. This connection is performed before any
redirections specified by the command.
If `|&' is used, COMMAND1's standard error, in addition to its
standard output, is connected to COMMAND2's standard input through the
pipe; it is shorthand for `2>&1 |'. This implicit redirection of the
standard error to the standard output is performed after any
redirections specified by the command.
The reserved word `time' causes timing statistics to be printed for
the pipeline once it finishes. The statistics currently consist of
elapsed (wall-clock) time and user and system time consumed by the
command's execution. The `-p' option changes the output format to that
specified by POSIX. When the shell is in POSIX mode ( Bash POSIX
Mode), it does not recognize `time' as a reserved word if the next
token begins with a `-'. The `TIMEFORMAT' variable may be set to a
format string that specifies how the timing information should be
displayed. Bash Variables, for a description of the available
formats. The use of `time' as a reserved word permits the timing of
shell builtins, shell functions, and pipelines. An external `time'
command cannot time these easily.
When the shell is in POSIX mode ( Bash POSIX Mode), `time'
may be followed by a newline. In this case, the shell displays the
total user and system time consumed by the shell and its children. The
`TIMEFORMAT' variable may be used to specify the format of the time
information.
If the pipeline is not executed asynchronously ( Lists), the
shell waits for all commands in the pipeline to complete.
Each command in a pipeline is executed in its own subshell (
Command Execution Environment). The exit status of a pipeline is the
exit status of the last command in the pipeline, unless the `pipefail'
option is enabled ( The Set Builtin). If `pipefail' is enabled,
the pipeline's return status is the value of the last (rightmost)
command to exit with a non-zero status, or zero if all commands exit
successfully. If the reserved word `!' precedes the pipeline, the exit
status is the logical negation of the exit status as described above.
The shell waits for all commands in the pipeline to terminate before
returning a value.
Info Catalog
(bash.info) Simple Commands
(bash.info) Shell Commands
(bash.info) Lists
automatically generated byinfo2html