unbuffer 명령의 반환 값

unbuffer 명령의 반환 값

출력을 화면에 인쇄하고 빌드 결과를 구문 분석하는 동안 빌드 결과를 캡처하는 다음 bash 코드가 있습니다.

output=$(unbuffer cmake ... | tee /dev/tty)
parseErrors ${output}

ParseErrors는 말 그대로 작동합니다. 오류처럼 보이는 출력의 모든 항목을 구문 분석합니다. 거기에서 종료할 수도 있지만 함수 호출 후에 종료하고 싶습니다. unbuffer 명령에 전달된 cmake 빌드에서 반환 상태를 어떻게 얻을 수 있나요? PIPESTATUS[0]을 사용해 보았지만 언버퍼 자체에서 값을 반환하는 것 같습니다.

답변1

cmake두 줄 후에 반환 코드에 액세스하려고 한다고 가정하면 다음과 같이 할 수 있습니다.

output=$(unbuffer cmake ... | tee /dev/tty; exit "${PIPESTATUS[0]}")
rc=$?
parseErrors ${output}
exit "$rc"

$()PIPESTATUS는 서브셸 내에서 사용해야 합니다 . 반환 코드를 출력에 추가하려면 exit로 바꾸십시오 echo.

관련 정보