spi*_*ton 15 string powershell function echo
嘿伙计们,我是一个Powershell noob,似乎不断陷入这样的奇怪行为.这是一些测试代码:
function EchoReturnTest(){
echo "afdsfadsf"
return "blah"
}
$variable = EchoReturnTest
echo ("var: " + $variable)
Run Code Online (Sandbox Code Playgroud)
运行此脚本会将其生成为输出:"var:afdsfadsf blah"
为什么函数不仅仅返回字符串"blah"?
Kei*_*ill 24
首先,PowerShell函数返回所有未捕获的"输出".您可以通过分配变量来捕获输出,并且可以通过重定向到$null例如以下来忽略输出:
$arrayList.Add("hi") > $null
Run Code Online (Sandbox Code Playgroud)
这通常会输出类似于0的内容(添加"hi"的索引),但由于我们重定向到$ null,因此忽略输出.
其次,echo它只是"Write-Output"的别名,它将相应的对象写入输出流. return "blah"只是一个方便,相当于:
Write-Output "blah"
return
Run Code Online (Sandbox Code Playgroud)
所以你的函数实现等同于:
function EchoReturnTest(){
Write-Output "afdsfadsf"
Write-Output "blah"
return
}
Run Code Online (Sandbox Code Playgroud)
如果你想在主机控制台上"看到"某些信息而不将其视为功能"输出"的一部分,那么使用Write-Host,例如:
function EchoReturnTest(){
Write-Host "afdsfadsf"
return "blah"
}
Run Code Online (Sandbox Code Playgroud)
此外,如果您没有参数,那么您不需要函数名末尾的parens,例如function EchoReturnTest { return 'blah' }.
| 归档时间: |
|
| 查看次数: |
6447 次 |
| 最近记录: |