In the documentation for set -e, the Bash manual says that errexit is suspended in all but the last command of a pipeline:
The shell does not exit if the command that fails is part of [...] any command in a pipeline but the last The documentation also of course says that errexit suspension cascades into compound commands: If a compound command or shell function executes in a context where -e is being ignored, none of the commands executed within the compound command or function body will be affected by the -e setting, even if -e is set and a command returns a failure status. This means the following script should output both "1" and "2": (false; echo 1) | cat set -e (false; echo 2) | cat However, it only outputs "1". I tested in Bash 4.0 through 5.2. Is this a bug in the behavior, or is it a bug in the documentation?