PowerShell的:为什么我一定要逃逸的$ args双破折号参数?(Powershell: Wh

2019-09-21 23:39发布

这里是一个非常简单的示例脚本:

function fun () { "AAA $args ZZZ" }
fun a b c
fun a - b
fun a -- b
fun a '--' b
fun a --- b

结果我得到的是:

AAA a b c ZZZ
AAA a - b ZZZ
AAA a b ZZZ
AAA a -- ZZZ
AAA a --- b ZZZ

我显然需要转义双破折号。 为什么?

我正在写一个PowerShell包装的一套脚本和一些这些脚本的指派特定的含义为“ - ”。 我怎样才能让它通过未修改?

Answer 1:

- 被认为是一种特殊的“最终ofparameters”参数。

从布鲁斯·帕耶特的Windows PowerShell中的作用:

该报价保持参数接合体治疗引号的字符串作为参数。 另外,这样做的不太常用的方法是使用特殊的“最终ofparameters”参数,这是两个连字符背靠背( - )。

这个序列之后,一切都将被视为一个参数,即使它看起来像一个参数。 例如,使用 - 你也可以写出来的字符串-InputObject没有使用引号:

PS (3) > Write-Output -- -InputObject

将导致-inputobject作为输出。



文章来源: Powershell: Why do I need to escape a double-dash parameter in $args?