여러 줄 명령의 종료 코드 캡처

여러 줄 명령의 종료 코드 캡처

TLDR: cmd1Makefile에 런타임 종료 코드를 저장하는 방법은 무엇입니까?cmd2cmd1 ; cmd2

자세한 내용은:

cmd1 ; cmd2cmd2실패 하더라도 cmd1실행하고 싶기 때문에 Makefile에서 실행하고 있습니다 .

$?cmd1비어 있습니다 cmd2. 그렇지 않으면 다음을 사용합니다: cmd1 ; E1=$? ; cmd2 ; E2=$?.

a=$(cmd1)사람들이 Save Exit Code To 사용을 제안하는 것을 본 적이 있지만 그 역시 a나에게는 a비어 있는 것으로 나타납니다 .

답변1

마치 쉘에 전달하려는 것처럼 이스케이프해야 합니다 $.$$

target:
    cmd1; e1=$$?; cmd2; e2=$$?; echo "cmd1 exited with $$e1, cmd2 with $$e2"; exit "$$(( e1 || e2 ))"
    echo only output if both cmd1 and cmd2 succeeded above
$ make target
cmd1; e1=$?; cmd2; e2=$?; echo "cmd1 exited with $e1, cmd2 with $e2"; exit "$(( e1 || e2 ))"
/bin/sh: 1: cmd1: not found
/bin/sh: 1: cmd2: not found
cmd1 exited with 127, cmd2 with 127
make: *** [Makefile:2: target] Error 1

관련 정보