Powershell:为什么我需要转义$args中的双破折号参数



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

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包装器,其中一些脚本为"--"赋予了特定的含义。我怎样才能不加修改地通过它?

-被认为是一个特殊的"参数结束"参数。

来自Bruce Payette的Windows PowerShell在行动:

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

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

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

将产生-inputobject作为输出。

最新更新