명령이 실패하면 명령을 중단하지 않도록 GNU Make 3.81에 지시하려고 -
하지만 다음 명령에서 종료 상태를 확인하고 더 유익한 메시지를 인쇄하고 싶습니다. 그러나 아래 내 Makefile이 실패합니다.
$ cat Makefile
all:
-/bin/false
([ $$? -eq 0 ] && echo "success!") || echo "failure!"
$
$ make
/bin/false
make: [all] Error 1 (ignored)
([ $? -eq 0 ] && echo "success!") || echo "failure!"
success!
Makefile이 왜 "성공!" "실패!"대신 ?
최신 정보:
허용되는 답변을 따르고 확장하는 방법은 다음과 같습니다.
failure:
@-/bin/false && ([ $$? -eq 0 ] && echo "success!") || echo "failure!"
success:
@-/bin/true && ([ $$? -eq 0 ] && echo "success!") || echo "failure!"
.ONESHELL은 하나의 쉘에서 모든 영수증 블록을 실행합니다. 첫 번째 명령이 실패하면 다음 명령이 문제없이 실행됩니다. 이를 방지하기 위해
—
폴 - AG
.SHELLFLAGS = -ec
사용해야합니다. 그러나이 경우 -
make는 오류를 무시하지만 여전히 모든 블록에 실패하기 때문에 접두사 more를 사용할 수 없습니다 (영수증의 개인 명령에). 따라서 || :
명령을 무시하는 솔루션 중 하나입니다. 그러나 (Windows가되지 크로스 플랫폼이 아니다 || :
나 || true
)
.ONESHELL:
지시문 을 조사 할 수 있습니다 .