这里有一个非常简单的示例脚本:
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作为输出。