在RUN命令中的字符串中的Dockerfile ARG替换

时间:2018-05-08 17:29:47

标签: bash docker dockerfile

在我的Dockerfile中,我想用字符串替换变量。

ARG w=world
RUN echo 'Hello $w'

我希望输出为Hello world,但实际输出为Hello $w

2 个答案:

答案 0 :(得分:1)

Docker不会在RUN命令中扩展ARG值。相反,它将ARG作为环境变量注入。 shell本身扩展了变量,我使用的所有Linux shell的行为都基于报价类型。

单引号指示shell不扩展任何内容,您只需要转义单引号和转义字符。虽然双引号包括变量扩展以及许多其他转义字符。有关详细信息,请参阅shell上的手册页。

所以您已经找到的解决方案是:

RUN echo "Hello $w"

答案 1 :(得分:0)

RUN echo "Hello $w"运行正常。 ARG在双引号内解析。