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

时间:2017-08-24 05:38:15

标签: powershell

在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

我做错了什么?

2 个答案:

答案 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。