首页 文章

从管道加入线

提问于
浏览
1

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

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

鉴于此PowerShell命令

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

我想管道创建相同输出的东西 . 我尝试使用Write-Host,但忽略了Separator选项

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

3 回答

  • 0

    如果找不到可以完全按照自己的意愿执行的Powershell cmdlet,则可以随时滚动:

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

    -join 运算符,但您必须像这样使用它:

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

    你不是真的在任何地方输出输出 . 只收集结果然后加入 .

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

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

    或更明确地:

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

相关问题