繁体   English   中英

如何在Powershell命令中使用Powershell表达式?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM