Artificial intelligent assistant

Check for failure of piped command > **Possible Duplicate:** > Get exit code of process that's piped to another If I pipe the output of one command into another, is there a way for me to check explicitly whether the first command failed? For example, if `prog` processes a file and outputs to STDOUT: prog file1 | cmp - file2 is there a way to check if `prog` explicitly failed or succeeded (by return code)? I want to avoid the use of temporary files, and don't want to rely on the output of the second command; so, for the example above, I want to avoid examining the output of `cmp` to determine if `prog` failed (if there is no affirmative answer to my question, I'll just fall back to doing precisely that).

You want `set -o pipefail`.

From the Bash manpage:


pipefail

If set, the return value of a pipeline is the value of
the last (rightmost) command to exit with a non-zero status,
or zero if all commands in the pipeline exit successfully.
This option is disabled by default.

xcX3v84RxoQ-4GxG32940ukFUIEgYdPy 478bc45d30d3aa5c1e13c9306641cf0b