@ $(shell ...)是什么意思?

时间:2019-02-05 08:04:00

标签: amazon-web-services makefile

我在makefile中遇到了以下代码:

push: build
    @$(shell aws ecr get-login --no-include-email)
    docker tag $(CONTAINER) $(DOCKER_REPO):latest
    docker push $(DOCKER_REPO):latest

您能在这里解释'@'是什么吗?

1 个答案:

答案 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