"와 '의 차이점은 무엇이며 언제 사용합니까? [복제]

"와 '의 차이점은 무엇이며 언제 사용합니까? [복제]

나는 인용된 문자열을 입력하는 데 익숙했지만 이제부터 구성 파일과 제안 사항을 검색할 때 아포스트로피가 사용된 것을 볼 수 있습니다.

나는 종종 아포스트로피 내용을 구성 파일에 복사하고 코드가 서로 맞도록 따옴표로 바꿉니다.

그러나 그들 사이의 차이점은 무엇입니까? (저는 주로 bash를 목표로 삼고 있습니다. 다른 Linux 기반 스크립트가 다르게 작동한다면 그것은 보너스입니다.)

예를 들어:

echo "Hello World!"그리고echo 'Hello World!'

이 중 하나를 사용하면 (형식화된) 변수를 사용하지 못할 수도 있습니다. 이것이 나와 관련이 있습니까, 아니면 단지 개인적인 선호입니까?

답변1

작은따옴표와 큰따옴표 사이에는 차이가 있지만 스타일 문제는 아닙니다. 작은따옴표는 실제로 여러분이 쓴 내용을 반영하므로 여러분이 쓴 내용이 인쇄될 것임을 확신할 수 있습니다. 반면에 큰따옴표는 변수 값을 삽입합니다.

에서 man bash:

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

문자를 큰따옴표로 묶으면 기록 확장이 활성화된 경우 $, 백틱, \ 및 !를 제외한 따옴표 안의 모든 문자의 리터럴 값이 유지됩니다. $ 및 백틱 문자는 큰따옴표 내에서 특별한 의미를 유지합니다. 백슬래시는 뒤에 $, `, ", \ 또는 개행 문자 중 하나가 올 때만 특별한 의미를 유지합니다. 큰따옴표 앞에 백슬래시를 붙여 큰따옴표 안에 넣을 수 있습니다. 활성화된 경우 기록 확장 큰따옴표 안에 나타나는 !를 탈출하기 위해 백슬래시를 사용하지 않는 한 수행됩니다. 이 경우 ! 앞의 백슬래시는 제거되지 않습니다.

따라서 귀하의 예에서는 다음과 같습니다.

#!/bin/bash
PLACE="World"
echo "Hello $PLACE !"
echo 'Hello $PLACE !'

다음과 같은 출력이 생성됩니다.

Hello World !
Hello $PLACE !

답변2

https://www.gnu.org/software/bash/manual/bashref.html#인용

큰따옴표 안의 변수는 확장됩니다.

작은따옴표는 문자열 보간을 방지합니다.

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

$'…'ANSI C 이스케이프 시퀀스를 사용할 수 있는 기호도 있습니다 .

답변3

언어에 따라 다릅니다. 당신은 bash를 언급했고 다른 답변은 그것에 초점을 맞추고 있지만 질문을 한 방식은 여기에 일반적인 규칙이 있다고 생각한다는 것을 암시합니다. 아니요.

예를 들어, 무작위로 발생하는 언어를 생각해 보세요.

  • 문자열 내의 변수는 확장되지만 확장 되지 bash는 않습니다. 신은 csh가 무슨 일을 했는지 알고 있습니다.sh"..."'...'
  • Python에서는 이 두 가지가 동일하며 취향이나 편의성에 따라 둘 중 하나를 선택할 수 있습니다.
  • C와 유사한 언어에서는 "..."문자열이고 'x'단일 문자이며 'abc'구문 오류입니다.
  • Lisp에서 뒤에 오는 모든 항목을 "참조" "..."하는 문자열입니다 .'
  • 구성 파일에서 "올바른" 따옴표는 "..."이거나 구성된 프로그램 작성자가 좋은 생각이라고 생각하는 내용 '...'"..."수 있습니다.[...]|...|
  • Postscript에서는 문자열이 로 표시됩니다 (...).
  • (다소 고대의) Fortran에서는 5자 문자열 "hello"를 다음과 같이 쓸 수 있습니다 5Hhello(즉, 인용부호 같은 문자열 표시가 없는 예입니다).
  • 영어로 그들은 둥지를 짓는다"나는 그 사람에게 인사했어요"또는"나는 그 사람에게 '안녕하세요'라고 말했습니다."편집자가 대서양의 어느쪽에 살고 있는지에 따라 다릅니다.
  • 시간이 지나면 좀 더 신비한 예를 생각해 낼 수 있을 것이라고 확신합니다.

그것들,오직Python은 취향이나 스타일의 문제입니다. 따옴표는 또 다른 언어 구문일 뿐입니다.

관련 정보