我是一个 Powershell 菜鸟,似乎一直被这种奇怪的小行为所吸引。这是一些测试代码:
function EchoReturnTest(){
echo "afdsfadsf"
return "blah"
}
$variable = EchoReturnTest
echo ("var: " + $variable)
运行此脚本会生成以下输出:“var: afdsfadsf blah”
为什么函数不只返回字符串“blah”?
我是一个 Powershell 菜鸟,似乎一直被这种奇怪的小行为所吸引。这是一些测试代码:
function EchoReturnTest(){
echo "afdsfadsf"
return "blah"
}
$variable = EchoReturnTest
echo ("var: " + $variable)
运行此脚本会生成以下输出:“var: afdsfadsf blah”
为什么函数不只返回字符串“blah”?
首先,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"
}
此外,如果您没有参数,那么您不需要函数名称末尾的括号,例如function EchoReturnTest { return 'blah' }
.