2009-01-16 66 views
3

根据定义,$ args变量应该包含传递给脚本函数的所有参数。但是,如果我在我的函数内部构造一个管道,$ args变量的计算结果为null。有人知道为什么

见这个例子:

function test { 1..3 | % { echo "args inside pipeline: $args" } ; echo "args outside pipeline: $args" } 

这是输出,传递参数时, “你好”:

PS> test hello 
args inside pipeline: 
args inside pipeline: 
args inside pipeline: 
args outside pipeline: hello 

是否有此特殊原因?我知道如何解决这个问题,但是我不知道那里的anonye是否可以解释这个原因。

回答

5

管道使用$输入。试试这个:

function test { 1..3 | % { echo "args inside pipeline: $input" } ; echo "args outside pipeline: $args" } 
+0

好的谢谢。但是我仍然会说这种行为很奇怪。根据开发者的意见,他们努力使用最小惊奇原则来设计它;) – driAn 2009-01-16 17:34:42