From Bash Reference Manual
A pipeline is a sequence of simple commands separated by one of the control operators
|or|&.
From POSIX 2013
A pipeline is a sequence of one or more commands separated by the control operator
|.
I know that Bash has many extensions to POSIX shells, e.g. |&.
But are the component commands of a pipeline
- simple commands or
- just any commands (simple, pipeline again, list, compound, and function)?
In Bash, the following works
$ for f in ls *; do echo $f; done | cat
$ for f in $(ls *); do echo $f; done | cat
but the first component command of the pipeline isn't simple but compound.