从管道加入线

时间:2014-12-05 08:25:39

标签: powershell pipeline

Bash有paste command,它可以组合来自标准输入的行

$ { echo foo; echo bar; echo baz; } | paste -s -d ,
foo,bar,baz

鉴于此PowerShell命令

& { echo foo; echo bar; echo baz; }

我想管道创建相同输出的东西。我试过了 写主机但忽略了分隔符选项

PS > & { echo foo; echo bar; echo baz; } | write-host -NoNewline -Separator ','
foobarbaz

3 个答案:

答案 0 :(得分:2)

如果您找不到能够完全符合要求的Powershell cmdlet,您可以随时自行推送:

function paste ($separator = ',') {$($input) -join $separator}
& { echo foo; echo bar; echo baz; } | paste

foo,bar,baz

答案 1 :(得分:1)

-join运营商,但您必须像这样使用它:

(& { echo foo; echo bar; echo baz; }) -join ","

你并没有真正在任何地方输出输出。只需收集结果然后加入。

你也可以用ForEach-Object来做,如果你真的想管它,但它有点冗长:

& { echo foo; echo bar; echo baz; } | foreach -Begin { $res = @() } { $res += $_ } -End { $res -join "," }

答案 2 :(得分:0)

Write-Host (& { echo foo; echo bar; echo baz; }) -Separator ","

或更明确地说:

[string[]]$myvariable = (& { echo foo; echo bar; echo baz; })
Write-Host $myvariable -Separator ","