我在 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
使用以下命令将每个命令行发送到单独的 shell:/bin/sh -ce "cmdline"
请注意,由于 shell 中不再有换行符,因此您可能需要在backslash newline
某些命令之前添加分号,例如
target:
if true; \
then \
echo true;\
fi
反斜杠导致将make
所有这些虚拟行转换为:
if true; then echo true; fi
在将其发送到 之前/bin/sh -ce cmd
。