2012-08-30 36 views
3

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

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包装,其中一些脚本为“ - ”指定了特定的含义。我怎样才能通过未经修改的?

+0

种类重复,请参阅:http://stackoverflow.com/questions/3009732/how-to-stop-powershell-insisting-on-one-dash-in-parameters –

回答

5

- 被认为是一种特殊的“结束参数”参数。

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

的报价保持参数接合体治疗引号的字符串作为参数。 另一个不太经常使用的方法是使用特殊的“参数末尾参数” 参数,这是两个连字符( - )。

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

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

会导致-inputobject作为输出。

+0

我仍然想通过所有原始$指向另一个命令。这种行为的任何理智的解决方法? – cdleonard

+0

你已经在使用它了。单引号或双引号。没有某种逃跑,你不能使用 - 。 – ravikanth

相关问题