작은따옴표로 묶인 경우 문자열 변수에 따옴표가 유지되는 이유는 무엇입니까?

작은따옴표로 묶인 경우 문자열 변수에 따옴표가 유지되는 이유는 무엇입니까?

정의된 문자열 변수를 프로그래밍 언어의 언어 bash로 전달할 수 있도록 큰따옴표를 유지해야 합니다 . Scheme제 질문은 다른 작은따옴표 세트 안에 큰따옴표가 남아 있는 이유는 무엇입니까? 이를 설명하기 위해 몇 가지 예를 들어 보겠습니다 bash command prompt.

$ str1=hey
$ echo $str1
hey
$ str2="hey"
$ echo $str2
hey
$ str3='hey'
$ echo $str3
hey
$ str4='"hey"'
$ echo $str4
"hey"
$ str5="'hey'"
$ echo $str5
'hey'
$ 

답변1

작은따옴표로 묶인 문자열은 문자열을 리터럴로 유지합니다. 큰따옴표로 묶인 문자열은 변수 보간 및 확장을 통해 문자열을 보존합니다. Bash 매뉴얼 페이지에서 이에 대해 설명합니다. QUOTING 섹션을 참조하세요.

인용 메커니즘에는 이스케이프 문자, 작은따옴표, 큰따옴표의 세 가지가 있습니다.

따옴표가 없는 백슬래시(\)는 이스케이프 문자입니다. {newline}을 제외하고 다음 문자의 리터럴 값을 유지합니다. \{newline} 쌍이 발생하고 백슬래시 자체가 인용되지 않으면 \{newline}은 줄 연속으로 처리됩니다(즉, 입력 스트림에서 제거되어 사실상 무시됩니다).

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

문자를 큰따옴표로 묶으면 기록 확장이 활성화된 경우 $, `, \ 및 !를 제외한 따옴표 안의 모든 문자의 리터럴 값이 유지됩니다. $ 및 ` 문자는 큰따옴표 안에 특별한 의미를 유지합니다. 백슬래시는 뒤에 $, `, ", \ 또는 {newline} 문자 중 하나가 올 때만 특별한 의미를 유지합니다. 큰따옴표 안에 백슬래시를 추가하여 큰따옴표를 따옴표로 묶을 수 있습니다. 활성화되면 기록 확장이 수행됩니다. 큰따옴표 안에 !를 표시하려면 백슬래시를 사용하세요. 그렇지 않으면 작업이 수행됩니다.

답변2

바라보다인용에 대한 Bash 참조 매뉴얼 섹션.

기본적으로 문자를 작은따옴표나 큰따옴표로 묶으면 특별한 의미가 없는 리터럴 문자로 변환됩니다(큰따옴표에 대한 몇 가지 예외가 있지만 여기서는 중요하지 않습니다). 따라서 일련의 문자 내에서 '"hey"'작은따옴표는 다른 모든 문자를 "보호"하고 큰따옴표는 특별한 의미를 잃고 리터럴 문자로 유지됩니다.

관련 정보