我在makefile中遇到了以下代码:
push: build
@$(shell aws ecr get-login --no-include-email)
docker tag $(CONTAINER) $(DOCKER_REPO):latest
docker push $(DOCKER_REPO):latest
您能在这里解释'@'是什么吗?
答案 0 :(得分:1)
@
位于Makefile中配方行的开头,导致make
默默地执行此行。
$(shell)
是一个Make函数,用于运行shell命令,并将其输出作为文本插入(与shell本身中的命令替换类似)。
更详细地说,aws ecr get-login
的输出是一个docker login
命令,应该由您要登录到AWS的Shell评估。
因此,在评估$(shell)
之后,您的食谱将变成类似
push: build
@docker login -u secrets -p moresecrets https://still-more-long-messy-secret-or-at-the-very-least-vaguely-sensitive-stuff.amazonaws.com
docker tag $(CONTAINER) $(DOCKER_REPO):latest
docker push $(DOCKER_REPO):latest