PowerShell's pipe adds linefeed

前端 未结 5 1287
醉梦人生
醉梦人生 2021-02-07 05:45

I\'m trying to pipe a string into a program\'s STDIN without any trailing linefeeds (unless that string itself actually ends in a linefeed). I tried googling around, bu

5条回答
  •  北恋
    北恋 (楼主)
    2021-02-07 06:28

    I will admit to having zero experience with the ruby -e "puts ARGF.read" command you are using after the pipe, but I think I can prove that the pipe doesn't adding a newline.

    # check length of string without newline after pipe 
    Write-Output "abc" | %{Write-Host "$_ has a length of: $($_.Length)"  }
    
    #check of string with newline length after pipe
    Write-Output "def`n" | %{Write-Host "$($_.Length) is the length of $_" -NoNewline }
    
    #write a string without newline (suppressing newline on Write-Host)
    Write-Output 'abc' | %{ Write-Host $_ -NoNewline; }
    
    #write a string with newline (suppressing newline on Write-Host)
    Write-Output "def`n" | %{ Write-Host $_ -NoNewline; }
    
    #write a final string without newline (suppressing newline on Write-Host)
    Write-Output 'ghi' | %{ Write-Host $_ -NoNewline; }
    

    This gives me an output of:

    abc has a length of: 3
    4 is the length of def
    abcdef
    ghi
    

    I think you might want to start looking at the ruby -e "put AGRF.read" command and see if it is adding a newline after each read.

提交回复
热议问题