docker的Bash文件无效引用$PWD

docker的Bash文件无效引用$PWD,bash,docker,Bash,Docker,我编写了一个bash文件来自动构建docker映像并运行docker。构建进行得很顺利,但是使用$PWD时出现了一个无效的引用错误。命令如下: #!/bin/bash app="docker.test2" docker build -t ${app} . docker run --rm -it -p 5000:5000 -v $PWD:/usr/src/Deployment -w /usr/src/Deployment/microblog2 ${app} flask run --host 0.0

我编写了一个bash文件来自动构建docker映像并运行docker。构建进行得很顺利,但是使用$PWD时出现了一个无效的引用错误。命令如下:

#!/bin/bash
app="docker.test2"
docker build -t ${app} .
docker run --rm -it -p 5000:5000 -v $PWD:/usr/src/Deployment -w /usr/src/Deployment/microblog2 ${app} flask run --host 0.0.0.0
当我用实际的文件路径替换$PWD时,它可以正常工作。我还尝试用$pwd、$(pwd)和${pwd}替换它,但没有效果。错误如下:

#!/bin/bash
app="docker.test2"
docker build -t ${app} .
docker run --rm -it -p 5000:5000 -v $PWD:/usr/src/Deployment -w /usr/src/Deployment/microblog2 ${app} flask run --host 0.0.0.0


应该可以正常工作

Docker从未见过
$PWD
;它无法知道是否使用了shell语法,因为您可以验证是否在脚本执行期间运行
bash-xyourscript
以启用跟踪日志记录。启用该日志记录后,您将看到在docker启动之前,
$PWD
引用被替换为实际目录名……但实际上,请运行
bash-xyourscript
,并将其与在交互式提示下运行
set-x
时生成的跟踪日志进行比较,然后运行相同的日志(工作!)在那里指挥。如果脚本中有隐藏字符之类的内容,或者在两种环境中执行命令的方式存在任何其他差异,则会暴露出来。请特别注意跟踪日志中最后一个变为
$'0.0.0\r'
的参数;如果您看到这一点,则表示您的脚本保存为DOS/Windows文本文件,而不是UNIX格式。另一件事:如果目录名包含空格,则需要在
$PWD
周围加上双引号。也就是说,
“$PWD”:/usr/src/Deployment
,或
“$PWD:/usr/src/Deployment”
。也就是说,由于缺少引文引起的任何bug都会出现在 SET-X/COD>日志中,因此请再次考虑对它们的请求。你能发布你用实际文件路径运行的命令吗?不明白,你能补充这个答案吗?