2011-08-27 3 views
3

에서 에러를 검출하는 방법을 나는 다음과 같은 명령이 있습니다배쉬 : 파이프

COMMAND1 && 
COMMAND2 | COMMAND3 | COMMAND4 && 
COMMAND5 

내가 COMMAND 1-5의 모든 확인이 성공적으로 만들고 싶어. 이것을 달성하기위한 쉬운 방법이 있습니까? 연구를하고, 나는 PIPESTATUS를 사용하지만, 수율이 쉽게 할 수있는 방법이 있나요

COMMAND1 && 
COMMAND2 | COMMAND3 | COMMAND4 && 
($PST=("${PIPESTATUS[@]}") && (exit ${PST[0]}) && (exit ${PST[1]})) && 
COMMAND5 

과 같은 몇 가지 매우 복잡한 명령에 할 수 발견?

BTW : 끝내기 n을 사용하여 상태 n으로 끝내는 명령을 실행했습니다. True와 False와 같은 직접적인 작업을 수행하는 UNIX 명령이 있습니까?

감사합니다.

+3

'set -o pipefail'을 시도해 보셨습니까? –

+0

이것은 내 문제를 정확하게 해결합니다. 감사. –

답변

8

set -o pipefail을 사용해보세요. 이렇게하면 파이프 라인의 오류 코드가 오류가있는 마지막 프로세스의 오류 코드가됩니다.

+0

슬프게도 * bash *에서만 사용할 수 있습니다. sh :( – GreyCat

+0

사실이지만 원래 질문은 bash를 참조했습니다. –