function EchoReturnTest(){
echo "afdsfadsf"
return "blah"
}
$variable = EchoReturnTest
echo ("var: " + $variable)
运行此脚本会将其生成为输出:“var:afdsfadsf blah”
为什么函数不仅仅返回字符串“blah”?
答案 0 :(得分:22)
首先,PowerShell函数返回所有未捕获的“输出”。您可以通过分配变量来捕获输出,并且可以通过重定向到$null
来忽略输出,例如:
$arrayList.Add("hi") > $null
这通常会输出类似0的内容(添加了“hi”的索引),但因为我们重定向到$ null,所以输出被忽略。
其次,echo
只是“Write-Output”的别名,它将相应的对象写入输出流。 return "blah"
只是一种便利,相当于:
Write-Output "blah"
return
所以你的函数实现等同于:
function EchoReturnTest(){
Write-Output "afdsfadsf"
Write-Output "blah"
return
}
如果你想在主机控制台上“看到”某些信息而不将其视为功能“输出”的一部分,那么请使用Write-Host,例如:
function EchoReturnTest(){
Write-Host "afdsfadsf"
return "blah"
}
此外,如果您没有参数,那么您不需要功能名称末尾的parens,例如function EchoReturnTest { return 'blah' }
。