큰 따옴표 안의 작은 따옴표 및 Bash 참조 매뉴얼


18

큰 따옴표라는 제목의 3.1.2.3 절에서 Bash 매뉴얼은 다음과 같이 말합니다.

큰 따옴표 ( ' "')로 문자를 묶으면 '$', '`', '\'및 히스토리 확장이 활성화 된 경우 '!'를 제외하고 따옴표 내의 모든 문자의 리터럴 값을 유지합니다.

현재 작은 따옴표 ( ')에 관심이 있습니다.

이전 섹션의 섹션 3.1.2.2에서 설명 된 특별한 의미는 다음과 같습니다.

작은 따옴표 ( ')로 문자를 묶으면 따옴표 안에 각 문자의 리터럴 값이 유지됩니다. 백 슬래시가 앞에 있어도 작은 따옴표 사이에는 작은 따옴표가 없을 수 있습니다.

두 박람회를 결합하면

 echo "'$a'"

변수가 어디에 a정의되어 있지 않은 (따라서 $a= 널 (null) 문자열), 인쇄해야합니다 $a으로, 화면에 ''보호 것, 그것은 특별한 의미의 내부의 필요, $특별한 해석에서. 대신을 인쇄합니다 ''. 왜 그래?

답변:


21

예제 의 '작은 따옴표 문자 echo는 큰 따옴표 ( ")로 묶인 리터럴 값을 가져와 의미를 잃습니다 . 묶는 문자는 큰 따옴표입니다.

할 수있는 일은 작은 따옴표를 별도로 인쇄하는 것입니다.

echo "'"'$a'"'"

또는 탈출 $:

echo "'\$a'"

아 맞아! 출력 결과는 귀하의 답변과 일치하지만 "$ ',' ’, ‘\’, and, when history expansion is enabled, ‘!’." in the manual. But now reading it again I realized the second character is not single quote, ("'") but tilde ("")를 제외하고 "큰 따옴표로 묶는 문자 ( '"')는 따옴표 안에있는 모든 문자의 리터럴 값을 유지합니다 . 빠른 응답에 감사드립니다 감사합니다
Lavya

2
매뉴얼에 언급 된 두 번째 문자는 물결표가 아닌 백틱입니다.
Kenny Evitt

6

문서를 오해합니다.

내부에 특별한 의미가 있다면, 특별한 해석으로부터 $를 보호 할 것입니다

수단 "특별한 의미를 갖는"는 것으로 되어 문자 그대로 특별하게 해석했다. 작은 따옴표 $는 확장 되지 않습니다. 그러나 큰 따옴표 안의 작은 따옴표는 리터럴 문자입니다. 즉, 아무런 영향을 미치지 않습니다. 출력 $a을 원하면 이 필요합니다 echo '$a'.


네 말이 맞아 나는 그 문서를 잘못 이해했을뿐만 아니라, 그것을 잘못 읽었다 ( " '"에 대한 "`")! "큰 따옴표 안의 작은 따옴표는 리터럴 문자입니다." 감사!
Lavya
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.