about_Quoting_Rules

업데이트 날짜: 2014년 5월

적용 대상: Windows PowerShell 2.0, Windows PowerShell 3.0, Windows PowerShell 4.0, Windows PowerShell 5.0

항목

about_Quoting_Rules

간단한 설명

Windows PowerShell®에서 작은따옴표 및 큰따옴표에 대한 규칙을 설명합니다.

자세한 설명

따옴표는 리터럴 문자열을 지정하는 데 사용됩니다. 작은따옴표(') 또는 큰따옴표(")로 문자열을 묶을 수 있습니다.

따옴표는 here-string을 만드는 데 사용됩니다. here-string은 따옴표 안의 내용이 문자 그대로 해석되는 작은따옴표 또는 큰따옴표 문자열입니다. here-string은 여러 줄에 걸쳐 있을 수 있습니다. here-string의 모든 줄은 따옴표로 묶이지 않아도 문자열로 해석됩니다.

원격 컴퓨터에 대한 명령에서 따옴표는 원격 컴퓨터에서 실행되는 명령 부분을 정의합니다. 또한 원격 세션에서 따옴표는 명령의 변수가 먼저 로컬 컴퓨터 또는 원격 컴퓨터에서 해석되는지를 결정합니다.

작은따옴표 또는 큰따옴표 문자열

문자열을 큰따옴표로 묶으면(큰따옴표 문자열) 달러 기호($)가 앞에 추가된 변수 이름이 변수 값으로 대체되고 나서 처리할 문자열이 명령에 전달됩니다.

예를 들면 다음과 같습니다.

        $i = 5
        "The value of $i is $i."

이 명령의 출력은 다음과 같습니다.

        The value of 5 is 5.

또한 큰따옴표 문자열에서 식이 평가되고 결과가 문자열에 삽입됩니다. 예를 들면 다음과 같습니다.

        "The value of $(2+3) is 5."

이 명령의 출력은 다음과 같습니다.

        The value of 5 is 5.

문자열을 작은따옴표로 묶으면(작은따옴표 문자열) 문자열이 입력될 때 명령에 전달됩니다. 대체가 수행되지 않습니다. 예를 들면 다음과 같습니다.

        $i = 5
        'The value of $i is $i.'

이 명령의 출력은 다음과 같습니다.

        The value $i is $i.

마찬가지로 작은따옴표 문자열의 식은 평가되지 않습니다. 리터럴로 해석됩니다. 예를 들면 다음과 같습니다.

        'The value of $(2+3) is 5.'

이 명령의 출력은 다음과 같습니다.

        The value of $(2+3) is 5.

작은따옴표 문자열에서 변수 값 대체를 방지하려면 Windows PowerShell 이스케이프 문자인 억음 기호 문자(`)(ASCII 96)를 사용합니다.

다음 예제에서 첫 번째 $i 변수 앞에 억음 기호 문자를 추가하면 Windows PowerShell이 변수 이름을 값으로 바꾸지 않습니다. 예를 들면 다음과 같습니다.

        $i = 5
        "The value of `$i is $i."

이 명령의 출력은 다음과 같습니다.

        The value $i is 5.

문자열에서 큰따옴표를 표시하려면 전체 문자열을 작은따옴표로 묶습니다. 예를 들면 다음과 같습니다.

        'As they say, "live and learn."'

이 명령의 출력은 다음과 같습니다.

        As they say, "live and learn."

큰따옴표 문자열로 작은따옴표 문자열을 묶을 수도 있습니다. 예를 들면 다음과 같습니다.

        "As they say, 'live and learn.'"

이 명령의 출력은 다음과 같습니다.

        As they say, 'live and learn.'

또는 큰따옴표 구를 큰따옴표로 묶습니다. 예를 들면 다음과 같습니다.

        "As they say, ""live and learn."""

이 명령의 출력은 다음과 같습니다.

        As they say, "live and learn."

작은따옴표를 작은따옴표 문자열에 포함하려면 두 번째 연속 작은따옴표를 사용합니다. 예를 들면 다음과 같습니다.

        'don''t'

이 명령의 출력은 다음과 같습니다.

        don't

Windows PowerShell이 강제로 큰따옴표를 문자 그대로 해석하게 하려면 억음 기호 문자를 사용합니다. 이렇게 하면 Windows PowerShell이 따옴표를 문자열 구분 기호로 해석하지 않습니다. 예를 들면 다음과 같습니다.

        "Use a quotation mark (`") to begin a string."

작은따옴표 문자열의 콘텐츠는 문자 그대로 해석되므로 작은따옴표 문자열로 리터럴 문자 해석을 강제하는 데는 억음 기호 문자를 사용할 수 없습니다.

예를 들어 Windows PowerShell이 이스케이프 문자를 인식하지 않으므로 다음 명령은 오류를 생성합니다. 대신, 두 번째 따옴표를 문자열의 끝으로 해석합니다.

        PS C:\> 'Use a quotation mark (`') to begin a string.'
        Unexpected token ')' in expression or statement.
        At line:1 char:27
        + 'Use a quotation mark (`') <<<<  to begin a string.'

HERE-STRING

here-string에 대한 따옴표 규칙은 약간 다릅니다.

here-string은 따옴표 안의 내용이 문자 그대로 해석되는 작은따옴표 또는 큰따옴표 문자열입니다. here-string은 여러 줄에 걸쳐 있을 수 있습니다. here-string의 모든 줄은 따옴표로 묶이지 않아도 문자열로 해석됩니다.

일반 문자열처럼 변수는 큰따옴표 here-string으로 대체됩니다. 작은따옴표 here-string에서 변수는 해당 값으로 대체되지 않습니다.

here-string을 모든 텍스트에 사용할 수 있지만 특히 다음과 같은 텍스트에서 유용합니다.

  • -- 리터럴 따옴표가 포함된 텍스트

  • -- HTML 또는 XML 문서의 텍스트와 같은 여러 줄 텍스트

  • -- 스크립트 또는 함수에 대한 도움말 텍스트

here-string에는 다음 형식의 하나를 사용할 수 있습니다. 여기서 <Enter>는 ENTER 키를 누를 때 추가되는 줄 바꿈 숨겨진 문자를 나타냅니다.

     Double-quotes:
        @"<Enter>
        <string> [string] ...<Enter>
        "@

    Single-quotes:
        @'<Enter>
        <string> [string] ...<Enter>
        '@

모든 형식에서 닫는 따옴표는 해당 줄의 첫 번째 문자여야 합니다.

here-string에는 두 숨겨진 문자 사이에 있는 모든 텍스트가 포함됩니다. here-string에서 모든 따옴표는 문자 그대로 해석됩니다. 예를 들면 다음과 같습니다.

        @"
        For help, type "get-help"
        "@

이 명령의 출력은 다음과 같습니다.

        For help, type "get-help"

here-string을 사용하면 명령에서 문자열을 사용하는 방법이 간소화됩니다. 예를 들면 다음과 같습니다.

        @"
        Use a quotation mark (') to begin a string.
        "@

이 명령의 출력은 다음과 같습니다.

        Use a quotation mark (') to begin a string.

작은따옴표 here-string에서 변수는 문자 그래도 해석되고 정확히 재현됩니다. 예를 들면 다음과 같습니다.

        @'
        The $profile variable contains the path
        of your Windows PowerShell profile.
        '@

이 명령의 출력은 다음과 같습니다.

        The $profile variable contains the path
        of your Windows PowerShell profile.

큰따옴표 here-string에서 변수는 해당 값으로 대체됩니다. 예를 들면 다음과 같습니다.

        @" 
        Even if you have not created a profile,
        the path of the profile file is:
        $profile.
        "@

이 명령의 출력은 다음과 같습니다.

        Even if you have not created a profile,
        the path of the profile file is:
        C:\Users\User01\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1.

Here-string은 보통 변수에 여러 줄을 할당하는 데 사용됩니다. 예를 들어 다음 here-string은 XML 페이지를 $page 변수에 할당합니다.

        $page = [XML] @"
        <command:command xmlns:maml="https://schemas.microsoft.com/maml/2004/10"
        xmlns:command="https://schemas.microsoft.com/maml/dev/command/2004/10" 
        xmlns:dev="https://schemas.microsoft.com/maml/dev/2004/10">
        <command:details>
                <command:name>
                       Format-Table
                </command:name>
                <maml:description>
                    <maml:para>Formats the output as a table.</maml:para>
                </maml:description>
                <command:verb>format</command:verb>
                <command:noun>table</command:noun>
                <dev:version></dev:version>
        </command:details>
        ...
        </command:command>
        "@

Here-string은 here-string을 해시 테이블로 변환하는 ConvertFrom-StringData cmdlet에 대한 입력의 편리한 형식입니다. 자세한 내용은 ConvertFrom-StringData를 참조하세요.

키워드

about_Here-Strings

about_Quotes

about_Quotation_Marks

참고 항목

about_Escape_Characters

ConvertFrom-StringData