【发布时间】:2021-03-24 17:27:19
【问题描述】:
所以最近遇到了一个奇怪的案例,我试图将本地目录中的文件访问到我的容器中。 当我在终端上运行以下命令时,它运行良好并显示预期的文件列表
docker run -it --rm -v $(pwd):/mnt/data -w /mnt/data-sink artprod.dev.abc.com/org/cli ls
但是当我尝试通过 makefile 运行它时,它什么也没显示,(我在上一步中运行 docker cmd 的同一路径中运行 make)
docker-publish: build
echo "Publishing $(APP_NAME) snapshot $(VERSION)"
docker run -it --rm -v $(pwd):/mnt/data -w /mnt/data-sink artprod.dev.abc.com/org/cli ls
【问题讨论】:
-
“什么都不显示”是什么意思? make 是否显示它正在运行的命令?请显示你输入的命令和你得到的输出,剪切和粘贴格式(不是屏幕截图等)
-
@sanchith 是的,我之前看到过。我的 make 文件是制表符缩进的。我也没有任何错误。事实上,我没有得到任何错误。
ls在使用 make 运行和在终端上单独运行时会打印不同的结果。当我说不同的结果时,我的意思是一个 make 没有列出任何文件,所以结果为空,一个直接在终端上运行返回文件列表 -
$(pwd)在 Makefile 中扩展 Make 变量pwd;它不做外壳插值。考虑$$(pwd)转义美元符号,以便将其传递给 shell。 -
感谢@DavidMaze 的提示,这确实是问题所在.... $$(pwd) 没有发挥作用,但 $(shell pwd) 起作用了。谢谢