在Linux上我可以运行
docker run --volume $(pwd):/some_dir container_image
在Powershell中,$pwd
不返回路径字符串,而是返回一些对象。我了解到我可以通过输入$pwd.path
来获取路径。但是这条路径有反斜杠,这是码头不喜欢的。所以我可以输入$((pwd).path -replace "\\", "/")
来获得正斜杠的路径。
但我现在无法理解如何在原始的docker命令中使用此变量。
在Windows和Powershell中,这不起作用:
docker run --volume $((pwd).path -replace "\\", "/"):/some_dir container_image
我做错了什么?
答案 0 :(得分:0)
在Powershell中,html, body {height: 100%;}
效果很好,所以请尝试将它全部组合为一个你传递为完整路径的刺痛:
$((pwd).path -replace "\\", "/")
完全披露:我没有使用docker run --volume ($((pwd).path -replace "\\", "/"))+":/some_dir" container_image
语法进行famailiar,所以不能保证会这样做,但是值得一试,对吧?
答案 1 :(得分:0)
我会试试这个:
docker run --volume "$((pwd).path -replace '\\', '/'):/some_dir" container_image
原因如下:
PS C:\> $((pwd).path):something
At line:1 char:14
+ $((pwd).path):something
+ ~~~~~~~~~~
Unexpected token ':something' in expression or statement.
+ CategoryInfo : ParserError: (:) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : UnexpectedToken
PS C:\> "$((pwd).path):something"
C:\something
因此,如果您正确引用整个路径,它应该按预期工作。因为您在字符串外使用subexpression $()
,所以':/somedir'
不是路径结果的一部分。它们不会自动加入linux(bash)shell。