중복 가능성:
다른 프로세스로 파이프된 종료 코드 가져오기
한 명령의 출력을 다른 명령으로 파이프하는 경우 첫 번째 명령이 실패했는지 명시적으로 확인할 수 있는 방법이 있습니까?
예를 들어, 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.