2017-08-24 61 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中。