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

标签 bash docker dockerfile

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

ARG w=world
RUN echo 'Hello $w'

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

最佳答案

Docker 不会在 RUN 命令中扩展 ARG 值。相反,它将 ARG 作为环境变量注入(inject)。 shell 本身会扩展变量,我使用的所有 Linux shell 都会根据引号的类型表现不同。

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

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

RUN echo "Hello $w"

关于bash - RUN 命令中字符串中的 Dockerfile ARG 替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50239236/

相关文章:

linux - 无法获取 Chef Recipe 以获取 .bashrc,我做错了什么?

docker - 如何检查一个容器是否正在运行并因此触发另一个容器?

Windows 上 Docker 中的 Node.js 开发环境

docker - 在 Dockerfile 中运行脚本时出错

git - 如何将 git 子模块作为普通目录添加到 git repo 中?

python-3.x - 带有自定义 SSL 证书的 Docker 上的 Exchangelib

python - 从 Bash 文件运行 Python 脚本导致导入错误

arrays - Bash循环遍历数组

bash - 嵌套的 EOF

docker - 有没有一种方法可以将文件存储在Docker主机上,而主机重启后该文件将继续存在?