7

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

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 包装器,其中一些脚本将特定含义分配给“--”。我怎样才能不加修改地通过它?

4

1 回答 1

8

-- 被认为是一个特殊的“end-ofparameters”参数。

来自 Bruce Payette 的 Windows PowerShell in Action:

引号使参数绑定器不会将带引号的字符串视为参数。另一种不太常用的方法是使用特殊的“end-ofparameters”参数,即两个连字符背靠背 (--)。

此序列之后的所有内容都将被视为参数,即使它看起来像参数。例如,使用 -- 你也可以写出字符串 -InputObject 而不使用引号:

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

将导致 -inputobject 作为输出。

于 2012-08-30T13:35:25.533 回答