gpt4 book ai didi

powershell - 在函数内调用 Echo 会预先挂起 echo 字符串以在 Powershell 中返回值

转载 作者:行者123 更新时间:2023-12-03 20:17:22 25 4
gpt4 key购买 nike

我是一个 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' } .

关于powershell - 在函数内调用 Echo 会预先挂起 echo 字符串以在 Powershell 中返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2158786/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com