내가 사용하고 있는 코드베이스의 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 $?