[英]How to use Powershell expression in Powershell command?
在Linux上,我可以运行
docker run --volume $(pwd):/some_dir container_image
在Powershell中, $pwd
不返回路径字符串,而是返回一些对象。 我了解到可以通过键入$pwd.path
来获取路径。 但是,此路径上有反斜杠,这是docker不喜欢的。 因此,我可以键入$((pwd).path -replace "\\\\", "/")
以获取带有正斜杠的路径。
但是我现在不明白如何在我的原始docker命令中使用此变量。
在Windows和Powershell中,这不起作用:
docker run --volume $((pwd).path -replace "\\", "/"):/some_dir container_image
我究竟做错了什么?
在Powershell中, $((pwd).path -replace "\\\\", "/")
可以很好地工作,因此请尝试将其全部组合为完整路径:
docker run --volume ($((pwd).path -replace "\\", "/"))+":/some_dir" container_image
披露:我不跟famailiar docker
语法,所以不能保证这会工作,但值得一试,对不对?
我会尝试这样的:
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中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.