나는 다음 조건문을 a 에서 사용합니다 Makefile
.
mytarget:
if [ -z "${TAG1}" | -z "${TAG2}" | -z "${TAG3}" ]
then
echo "Need to set all tag names images
exit 1
fi
하지만...
$ make mytarget TAG1=latest TAG2=latest TAG3=latest
if [ -z "latest" | -z "latest" | -z "latest" ]
/bin/bash: -c: line 1: syntax error: unexpected end of file
Makefile:36: recipe for target 'env' failed
make: *** [env] Error 1
답변1
모든(마지막) 명령줄 끝에는 백슬래시가 필요합니다.
make
다음 명령을 사용하여 각 명령줄을 별도의 셸로 보냅니다./bin/sh -ce "cmdline"
셸에는 더 이상 개행 문자가 없으므로 backslash newline
일부 명령 앞에 세미콜론을 추가해야 할 수도 있습니다.
target:
if true; \
then \
echo true;\
fi
백슬래시를 사용하면 make
이러한 모든 더미 행이 다음으로 변환됩니다.
if true; then echo true; fi
로 보내기 전에 /bin/sh -ce cmd
.