我在Makefile中有一个简单的if语句,如果存在删除停靠图像,但是它不能工作。注意,在日志文件映像中存在,但当我执行时,如果语句失败,则make clean。
NAME=program1
all: .docker-build
docker run ${NAME} make all
.docker-build:
docker build . -t ${NAME}
@echo "" > .docker-build
run-%: .docker-build
docker run ${NAME} make $*
clean:
ifeq ($(docker images -q ${NAME} 2> /dev/null), "")
docker image rm -f ${NAME}
endif
@rm -f .docker-build日志(注意图像存在,但如果make clean内部的语句失败):
➜ dockerfile-test docker images -q program1 2> /dev/null
5ee4797b91ad
➜ dockerfile-test make clean
rm -f .docker-build发布于 2021-12-04 18:51:53
这是:
ifeq ($(docker images -q ${NAME} 2> /dev/null), "")展开名为docker images -q program1 2> /dev/null的make变量,该变量不存在,因此扩展到空字符串,然后将其与两个字符的字符串""进行比较,并且它永远不匹配。
你可能是说:
ifeq ($(shell docker images -q ${NAME} 2> /dev/null),)https://stackoverflow.com/questions/70228203
复制相似问题