Makefile의 표현식 평가
Makefile을 사용할 때 표현식이 명령에 어떻게 삽입되는지 이해하는 것이 중요합니다. 셸 표현식을 Makefile 명령에 통합하려고 할 때 일반적인 함정이 발생합니다.
이러한 경우 중 하나는 Go 테스트를 사용할 때입니다. 공급업체 Go 프로젝트에서 종속성을 건너뛰려면 명령줄에서 다음 명령을 사용할 수 있습니다.
$ go test $(go list ./... | grep -v /vendor/)
이 명령은 공급업체 테스트를 성공적으로 필터링합니다. 그러나 다음을 사용하여 Makefile에 동일한 명령을 포함하려고 하면
test: go test $(go list ./... | grep -v /vendor/) .PHONY: test
식이 평가되지 않습니다. 대신 명령이 문자 그대로 처리되어 오류가 발생합니다.
이 문제를 해결하려면 아래와 같이 달러 기호($)를 이중 이스케이프 처리하세요.
test: go test $$(go list ./... | grep -v /vendor/) .PHONY: test
이중으로 -달러 기호를 이스케이프 처리하면 Makefile은 표현식이 쉘에 의해 평가되어야 함을 이해하여 명령의 성공적인 보간 및 실행을 가능하게 합니다.
위 내용은 쉘 표현식을 사용할 때 Makefile 명령이 실패하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!