나는 이것을 가지고있다:
node ${SUMAN_RUNNABLE} | tee -a run.sh.log
EXIT_CODE=$?;
하지만 tee가 노드 실행 파일 대신 코드를 제공하기 때문에 종료 코드는 항상 0인 것처럼 보입니다.
이 경우 노드 실행 파일에서 종료 코드를 캡처하는 방법이 있습니까?
답변1
~에서https://stackoverflow.com/a/1221870/5020949:
이름이 지정된 내부 Bash 변수가 있습니다
$PIPESTATUS
. 이는 마지막 포그라운드 명령 파이프라인에 있는 각 명령의 종료 상태를 보유하는 배열입니다.<command> | tee out.txt ; test ${PIPESTATUS[0]} -eq 0
또는 다른 셸(예: zsh)에서도 작동하는 또 다른 대안은 파이프라인 실패를 활성화하는 것입니다.
set -o pipefail ...
첫 번째 옵션은아니요
zsh
구문이 약간 다르기 때문에 이것이 작동합니다.