파이프라인 명령이 실패하는지 확인하세요.

파이프라인 명령이 실패하는지 확인하세요.

중복 가능성:
다른 프로세스로 파이프된 종료 코드 가져오기

한 명령의 출력을 다른 명령으로 파이프하는 경우 첫 번째 명령이 실패했는지 명시적으로 확인할 수 있는 방법이 있습니까?

예를 들어, prog파일을 처리하고 STDOUT으로 출력하는 경우:

prog file1 | cmp - file2

prog명시적인 실패 또는 성공(반환 코드를 통해)이 있었는지 확인하는 방법이 있습니까 ? 나는 임시 파일을 사용하지 않고 두 번째 명령의 출력에 의존하고 싶지 않습니다. 따라서 위의 예에서는 출력이 실패했는지 cmp확인하기 위해 출력을 확인하지 않고 싶습니다. prog질문이 있으면 이 작업을 다시 수행하겠습니다.)

답변1

당신이 원하는 set -o pipefail.

Bash 맨페이지에서:

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.

관련 정보