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

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

"큰 따옴표"라는 섹션 3.1.2.3에서 Bash 매뉴얼은 다음과 같이 말합니다.

문자를 큰따옴표('"')로 묶으면 기록 확장이 활성화된 경우 '$', '`', '\' 및 '!'를 제외한 따옴표 안의 모든 문자의 리터럴 값이 유지됩니다.

현재 내 관심사는 작은따옴표( ')입니다.

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

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

이 두 가지 논의를 종합하면,

 echo "'$a'"

변수가 a정의되지 않은 경우(따라서 = null 문자열) 내부적으로 특수 해석을 가리는 특별한 의미가 있으므로 화면에 인쇄 $a해야 합니다 . 대신에 이것이 인쇄됩니다 . 왜 그렇습니까?$a''$''

답변1

'예제의 작은따옴표 문자는 큰따옴표( )로 묶여 있기 echo때문에 리터럴 값을 취하며 의미를 잃습니다 . "묶인 문자는 큰따옴표입니다.

당신이 할 수 있는 일은 작은따옴표를 개별적으로 인쇄하는 것입니다:

echo "'"'$a'"'"

또는 탈출하려면 $:

echo "'\$a'"

답변2

문서를 오해했습니다.

내부에는 $를 특별한 해석으로부터 보호하는 특별한 의미가 있습니다.

"그 자체로 특별한 의미가 있다"는 뜻문자 그대로의 의미가 아닌 특별한 설명입니다. 작은따옴표는 $확장을 방지합니다. 그러나 큰따옴표 안의 작은따옴표는 문자 그대로의 문자입니다. 즉, 아무 영향도 주지 않습니다. 출력 $a을 원하면 echo '$a'.

관련 정보