makefile 명령의 느낌표는 무엇을 합니까?

makefile 명령의 느낌표는 무엇을 합니까?

내가 사용하고 있는 코드베이스의 Makefile에 있는 다음 명령에서 느낌표(및 읽기)의 영향을 이해하려고 합니다.

check-format:
    ! gofmt -s -l . | read;
    ! go run golang.org/x/tools/cmd/goimports -l . | read;

이러한 명령은 Mac 및 기타 UNIX 기반 시스템에서 실행됩니다.

Bash 스크립트의 느낌표에 대한 많은 질문에는 역사적 확장을 위한 것이라고 언급되어 있습니다. 그러나 위 Makefile의 맥락에서는 말이 되지 않는 것 같습니다.

여기에서 수행되는 작업을 이해 !하고 전달하는 데 도움을 주시면 감사하겠습니다. read감사합니다!

답변1

스틸 드라이버로서추측하다이는 Make 구성이 아니라 쉘 구성입니다. 파이프를 통해 전달하면 read내용에 대한 테스트가 제공되고, 이를 부정하면 무효성에 대한 테스트가 제공됩니다.

! command | read

command출력이 생성되지 않으면 성공합니다.

Make를 사용하지 않고도 이를 볼 수 있습니다.

! true | read; echo $?
! echo bar | read; echo $?

관련 정보