programing

에코에서 줄 바꿈 방지

sourcetip 2023. 8. 20. 18:14
반응형

에코에서 줄 바꿈 방지

에는 "PowerShell"이 되어 있습니다.echo명령은 항상 새 줄을 추가합니다.유닉스에 해당하는 것은 무엇입니까?echo -n?

echo는 의 별칭입니다.Write-Output파이프라인의 다음 명령으로 객체를 전송합니다.콘솔에 텍스트만 표시하려는 경우 다음 작업을 수행할 수 있습니다.

Write-Host "Hi" -NoNewLine

이 cmdlet은 echo|와 동일한 cmdlet이 아닙니다.쓰기-출력.

Write-Output의 주요 목적은 파이프라인의 다음 명령으로 객체를 보내는 것입니다.Write-Host의 기본 목적은 콘솔에 텍스트를 표시하는 것입니다.는 다을사텍콘스표이유시는되가트솔입니다.Write-Output, 은 모든 을 즉, PowerShell 전것송다로 합니다.Out-Default수신을 PowerShell 개체에서 텍스트 형식 지정 엔진으로 보내는 파이프라인의 끝에 있습니다.

다음은 예입니다.

Write-Host "hi" | Get-Member

다음과 같은 이유로 오류가 발생합니다.Write-Host는 텍스트를 콘솔에 쓰기만 하고 파이프라인의 다음 명령으로 문자열을 전달하지 않습니다.

Write-Output "hi" | Get-Member

그면다표다니됩이 됩니다.System.String특성과 방법은 다음과Write-Output합니다.string파이프라인의 다음 개체에 대한 개체입니다.

사용할 수 있습니다.Write-Host:

Write-Host "Hello " -nonewline
Write-Host "There!"

또는 명령줄에서:

PS C:\> Write-Host "Hello " -nonewline ; Write-Host "There!"
Hello There!

Andy Arismendi의 유용한 답변을 보완하기 위해:

  • 시에서바에서,echo -n 그 등가물, (또는휴대등가물용,등물가또),printf %s)는 인수를 데이터(출력) 스트림인 stdout으로 보냅니다.

  • PowerShell의 Unix stdout 스트림에 해당하는 것은 성공 스트림으로, 기본적으로 명령 출력이 사용됩니다.
    PowerShell은 텍스트뿐만 아니라 모든 유형의 개체를 성공 스트림으로 전송할 수 있습니다.

  • 따라서 엄밀히 말하면, 바시의 것과 동등한 것입니다.echo -n 'hi'를 들어,는 그냥 예들어다, 정니합당는입니다.'hi'PowerShell - 문자열이 암묵적으로 성공 스트림으로 전송됩니다.

  • 즉, 콘솔에 바꿈이 없는 문자열을 보내는 유일한 방법은 성공 스트림우회하는 것입니다. 이는 앤디의 답변에서 논의된 것과 같습니다.

    • PowerShell v4까지 ,Write-HostPowerShell의 출력 스트림을 모두 무시하고 콘솔에 직접 인쇄하기 때문에 출력을 전혀 캡처할 수 없었습니다.

    • , PowerShell v5 버전Write-Host구조화된 정보를 쓰기 위해 새로 도입된 스트림에 쓰기, 번호6그리고 사실상 의 별칭입니다.
      Write-Information -InformationAction Continue을 보다

  • 파일 쓰기 관련하여 PowerShell v5는 다음 cmdlet에 매개 변수에 대한 지원을 추가했습니다(v4까지, 텍스트 파일에 쓰기/추가할 경우 항상 뒤에 새 줄이 추가됨).-NoNewLine또한 입력 사이에 새 을 배치하지 않습니다. 여러 개가 있는 경우:

    • Set-Content/Add-Content
    • Out-File

여러 명령의 출력을 출력 스트림의 한 줄 문자열에 쓰는 방법:

해결 방법은 문자열 보간 또는 연결 또는 형식을 사용하여 출력 텍스트의 단일 행을 구성해야 하는 모든 명령의 출력을 결합하는 것입니다.

예를 들어, 다음 Bash 코드에 해당하는 (대략)...

#!/bin/bash

echo -n 'Today is: '
date

PowerShell의 기능:

  • 확장 가능한 문자열 사용(문자열 보간, 내부)"..." 연산자 사용하기$(...)):

    "Today is: $(Get-Date)"
    
  • 또는 문자열 연결 사용, 연산자 사용+:

    'Today is: ' + (Get-Date)
    
  • 는또, 용사를 -f(string-) 형식 연산자:

    'Today is: {0}' -f (Get-Date)
    

이러한 모든 PowerShell 명령은 성공 스트림에 한 줄의 문자열을 전송하지만 콘솔에서 인쇄할 때 이 문자열 자체에 항상 새 줄이 따라옵니다.

Write-Host -n 

PowerShell 5에서 작동합니다.

언급URL : https://stackoverflow.com/questions/9280591/avoid-newline-in-echo

반응형