> 백엔드 개발 > Golang > 쉘 표현식을 사용할 때 Makefile 명령이 실패하는 이유는 무엇입니까?

쉘 표현식을 사용할 때 Makefile 명령이 실패하는 이유는 무엇입니까?

Patricia Arquette
풀어 주다: 2024-12-26 01:46:09
원래의
865명이 탐색했습니다.

Why Does My Makefile Command Fail When Using Shell Expressions?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿