항목
    about_Quoting_Rules

간단한 설명
    Windows PowerShell에서 작은따옴표와 큰따옴표를 사용하는 규칙에 대해 설명합니다.


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

    따옴표는 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.'
          식 또는 문에서 예기치 않은 ')' 토큰입니다.
          줄:1 문자: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 키를 누를 때 
      추가되는 숨겨진 줄 바꿈 문자를 나타냅니다.
 

      형식 1:

	  @"<Enter>
          <string> [string] ...<Enter>
          "@


      형식 2:
 
	  @'<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_Escape_Characters
    ConvertFrom-StringData




목차