2017-12-04 13 views
2

내 메이크에서 간단한 루프를 가지고 :

@ for i in $(APPDIRS) ; do \ 
    $(MAKE) -C $$i real_clean ; \ 
    done 

내가 아는이 $$ 스크립트 자체의 process id 의미한다. '나는'무엇을 하는가? for 루프를 사용하여 프로세스 ID를 반복하는 중입니까?

답변

3

$make의 변수 식별자와 쉘의 변수 식별자로 사용됩니다. 따라서 에서 makefile을 사용하는 대신 변수를 확장하려면 $$을 사용하여 $을 이스케이프 처리해야합니다.

빠른 예로서, APPDIRS=a b c d e fMAKE=make (및 i은 메이크 파일에서 설정 해제 됨)으로 가정합니다. 그런 다음 쉘이보고하십시오 $

for i in a b c d e f ; do 
    make -C $i real_clean; 
done 

$$ 대신에, 그것은 볼 것이다 : 입니다

for i in a b c d e f ; do 
    make -C real_lean; 
done 

확실히 당신이 원하지 않는 것을.

+0

이것은 완벽합니다. $가 이스케이프 문자로 사용되었다는 것을 알지 못했습니다. –