PowerShell为什么要返回新行?

时间:2014-07-29 16:35:32

标签: powershell whitespace

我最近打破了PowerShell的一些微妙的细微差别,并注意到我无法避免使用这个平凡的函数在字符串的开头返回一个新行...

Function Why() {
    ""
    return "Well I tried."
}

这会返回" \ r \ n我试过了#34;。

Write-Host "Starting test."
$theBigQuestion= Why
Write-Host $theBigQuestion
Write-Host "Ending test."

这将输出以下内容:

Starting test.

Well I tried.
 Well I tried.
Ending test.

现在,PowerShell正在将一个输出与另一个输出连接起来。但为什么?是什么让我认为我想让空白行成为return语句的一部分?我(可能是错误地)喜欢使用这样的行作为速记,或者为了调试目的更仔细地检查变量。

相关:Function return value in PowerShell

2 个答案:

答案 0 :(得分:6)

此功能:

Function Why() {
    ""
    return "Well I tried."
}

返回两个字符串的数组。第一个字符串是一个空字符串,第二个字符串是"我试过了。"。当PowerShell显示一个字符串数组时,它会将每个字符串放在换行符上。

25> $r = why
26> $r.GetType()

IsPublic IsSerial Name                                     BaseType
-------- -------- ----                                     --------
True     True     Object[]                                 System.Array

27> $r[0].Length
0

28> $r[1]
Well I tried.

答案 1 :(得分:0)

如果您只想让“我尝试过” 返回,也可以使用Out-Null或将不需要的返回值分配给$null

Function Why() {
    Out-Null ""
    return "Well I tried."
}

Function Why() {
    $null = ""
    return "Well I tried."
}

Function Why() {
    "" > $null
    return "Well I tried."
}