2017-08-24 65 views
0

在Linux上,我可以运行如何在Powershell命令中使用Powershell表达式?

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

在声明任何变量的PowerShell中,我们使用$ abc,不知道docker。 –

+0

@VinodkumarG'pwd'是'Get-Location'的别名 –

回答

0

在PowerShell中,该$((pwd).path -replace "\\", "/")效果很好,所以尽量给它的所有组合成你通过你的全路径有刺:

docker run --volume ($((pwd).path -replace "\\", "/"))+":/some_dir" container_image 

全面披露:我不跟docker语法famailiar,所以可以”保证这会奏效,但值得一试,对吧?

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中。