2014-12-05 1 views
1

배쉬이 PowerShell 명령을 감안할 때 표준 입력파이프에서 선을 가입

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

에서 라인을 결합 할 수있는 paste command을 가지고

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

나는 같은 출력을 생성합니다 뭔가 파이프 싶습니다 . 나는 쓰기 호스트로 시도하지만 구분 옵션은 더 명시 적으로

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

답변

2

정확히 당신이 원하는 것을 할 것 파워 쉘 cmdlet을 찾을 수없는 경우, 당신은 항상 롤백 할 수 있습니다 자신 : 여기

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

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

을 무시했다 :

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

-join 운영자있다, 그러나 당신은 다음과 같이 사용해야 할 것이다 :

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

출력을 어디에서나 파이핑하는 것은 아닙니다. 먼저 결과를 수집 한 다음 가입하십시오. 당신이 정말로 원하는 경우

는 또한 파이프 그것을, ForEach-Object 함께 할 수 있지만, 조금 자세한입니다 :

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

'-join의 @ 약간 더 단순화 된 사용하는 것입니다 내가에 있으리라 믿고있어 @kevmar -join ","' – kevmar

+0

(에코 foo는; 바 에코 바즈 에코) OP가 함수 또는 스크립트를 호출하는 실제 사례. 예제는 파이프 라인에 출력하는 방법 일뿐입니다. 좀 더 현실적인 경우에 제안을하면'(invoke-myfunction -parameter 1) -join ',''와 유사 해 보일 것입니다. –