2
내 메이크에서 간단한 루프를 가지고 :
@ for i in $(APPDIRS) ; do \
$(MAKE) -C $$i real_clean ; \
done
내가 아는이 $$ 스크립트 자체의 process id 의미한다. '나는'무엇을 하는가? for 루프를 사용하여 프로세스 ID를 반복하는 중입니까?
내 메이크에서 간단한 루프를 가지고 :
@ for i in $(APPDIRS) ; do \
$(MAKE) -C $$i real_clean ; \
done
내가 아는이 $$ 스크립트 자체의 process id 의미한다. '나는'무엇을 하는가? for 루프를 사용하여 프로세스 ID를 반복하는 중입니까?
$
은 make
의 변수 식별자와 쉘의 변수 식별자로 사용됩니다. 따라서 쉘에서 makefile을 사용하는 대신 변수를 확장하려면 $$
을 사용하여 $
을 이스케이프 처리해야합니다.
빠른 예로서, APPDIRS=a b c d e f
및 MAKE=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
확실히 당신이 원하지 않는 것을.
이것은 완벽합니다. $가 이스케이프 문자로 사용되었다는 것을 알지 못했습니다. –