"큰 따옴표"라는 섹션 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'
.