Powershell의 리터럴 이스케이프 문자는 무엇입니까?


51

Powershell에서 따옴표로 묶은 문자열 안에 리터럴 따옴표 문자를 포함시킬 때 따옴표 문자를 이스케이프하여 문자열 델리 미터 대신 리터럴로 표시하려면 어떻게해야합니까?

답변:


75

에서 help about_quoting_rules

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

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

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

As they say, "live and learn."

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

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

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

As they say, 'live and learn.'

Windows PowerShell이 ​​큰 따옴표를 문자 그대로 해석하도록하려면 백틱 문자를 사용하십시오. 이렇게하면 Windows PowerShell이 ​​따옴표를 문자열 구분 기호로 해석하지 못합니다. 예를 들면 다음과 같습니다.

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

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

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

작은 따옴표로 묶인 문자열의 내용은 문자 그대로 해석되므로 역 따옴표 문자를 사용하여 작은 따옴표로 묶인 문자열에서 리터럴 문자 해석을 강요 할 수 없습니다.

작은 따옴표로 묶은 문자열에서 다른 인용 부호를 이스케이프 처리하기 위해 백틱 문자를 사용하는 것은 최신 버전의 PowerShell에서 지원되지 않습니다. 이전 버전의 PowerShell에서는 역 따옴표 이스케이프 문자를 사용하여 help about_quoting해당 버전의 PowerShell에서 사용 가능한 문서에 자세히 설명 된대로 작은 따옴표로 묶인 문자열 내에서 큰 따옴표 문자를 이스케이프 할 수 있습니다 .


2
참고 사항이지만 작은 따옴표를 벗어날 수없는 것처럼 보입니다. 마지막 예제는 유효하지 않습니다. 어쩌면 그 about_quoting도움을 찾을 수 없기 때문에 게시물 이후에 변경된 것이있을 수 있습니다. Powershell v5.1 실행 큰 따옴표를 이탈하거나 다른 유형의 따옴표를 중첩하면 여전히 예상대로 작동합니다.
Kal Zekdor

1
흥미 롭다-작은 따옴표를 이스케이프 처리하는 것이 버그 인 것 같습니다. about_quoting 도움말 파일이 about_quoting_rules로 대체되었으며 작은 따옴표로 묶인 문자열이 리터럴이므로 역 따옴표를 사용하여 PowerShell v5에서 작은 따옴표를 이스케이프 할 수 없음을 분명히 나타냅니다. 잘 잡았습니다 .V3에서는 다릅니다.
Helvick

1
작은 따옴표는 SQL에서와 같이 작은 따옴표로 묶은 문자열에서 두 배로 늘려서 이스케이프됩니다. 따라서 두 번째 예제와 동일하게 'As they say, ''live and learn.'''출력 As they say, 'live and learn.'합니다.
brianary

13

Powershell의 이스케이프 문자는 "`"(뒤로 아포스트로피 / 그레이브)입니다.

따옴표와 특수 문자를 이스케이프 처리하는 데 사용할 수 있습니다 (예 : tab은`t).


2
이것은 아마도 bash사용자를 미치게 할 것입니다 . 합니다 ( cmd.exe이스케이프 문자입니다 ^)
grawity

2
음, 곁눈질하면 백 슬래시처럼 보입니다.
koenigdmj

10

여기에 이미 제공된 내용을 칭찬하려면 따옴표 자체로 따옴표 (싱글 또는 더블)를 이스케이프 할 수 있다는 것도 알아야합니다. 이것은 당신이 이것을 할 수 있음을 의미합니다 :

"" "큰 따옴표로 묶인 문자열" "의 예입니다."

이:

'이번에는``단일 인용' '입니다.'

이 구문이 제공하는 이점은 간단합니다. 역 따옴표로 따옴표를 이스케이프 처리하는 것보다 동일한 따옴표를 두 번 입력하는 것이 더 쉽습니다.


1

단일 'text'이므로 리터럴 텍스트로 취급 된 다음 "\"를 사용하여 특수 문자를 이스케이프 처리하십시오.

예 :이 문자열 : "말하면서"살아서 배우다 ""이 문자열이됩니다. "살아서 배우십시오"


1
PowerShell에는 없지만 그렇지 않습니다. PS C : \ WINDOWS \ system32> Write-Host '말
하자마자

1
@ HopelessN00b는 너무 거칠게 판단하지 않을 수도 있습니다 PowerShell.exe -Command. 매개 변수에 큰 따옴표를 사용 하고 전달하려고 할 때 작동합니다 (기술적으로 CMD는 탈출하지만 명령 매개 변수에서는 유효합니다). imgur.com/1btjoQW
jparnell8839
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.