답변:
이것은 bash 매뉴얼 의 관련 섹션 에 아주 잘 설명되어 있습니다. 간단히 말해서 작은 따옴표 안에있는 것은 문자 그대로 해석됩니다. 예를 들어,
$ echo '$SHELL'
$SHELL
$ echo '{1..3}'
{1..3}
인용되지 않은 버전과 비교하십시오.
$ echo $SHELL
/bin/bash
$ echo {1..3}
1 2 3
큰 따옴표는 변수 확장을 허용합니다 (역사 확장 및 기타 사항도 가능). 기본적으로 확장하고 싶은 것을 다룰 때 사용합니다. 예를 들면 다음과 같습니다.
$ echo "$SHELL"
/bin/bash
$ echo "!!"
echo "echo "$SHELL""
echo /bin/bash
따옴표를 보호하면서 즉, 작은 따옴표는 완전히 쉘에서 문자열을 보호하는 몇 가지 것들 (예를 들어 공간)하지만 변수와 특수 문자가 올바르게 해석 / 확장 할 수 있습니다.
작은 따옴표 ( ''
)는 따옴표로 묶은 각 문자의 리터럴 값을 유지하는 데 사용됩니다.
큰 따옴표 ( ""
)를 사용 하면 달러 기호 ( $
), 백틱 (뒤로 작은 따옴표 ``
) 및 백 슬래시 ( \
)를 제외한 모든 문자의 리터럴 값이 유지 됩니다.
백틱 ( ``
) 안에 포함 된 쉘은 "백틱 내부의 명령 출력"을 의미하는 것으로 해석합니다. 명령 출력이 명령 자체를 대체하므로이를 "명령 대체"라고합니다.
참고 문헌 :
일반적으로 말하고 있지만 :
""
-출력 전에 일부 정보를 처리하는 데 사용됩니다. (PHP처럼)
name=NESS; echo "Hello my name is $name"
같습니다.Hello my name is NESS
''
-출력을 그대로 보여줍니다. (PHP에서도 마찬가지입니다.)
Hello my name is $name
큰 따옴표와 작은 따옴표의 차이점은 큰 따옴표는 변수를 처리하고 값을 표시하는 반면 작은 따옴표는 처리하지 않고 변수의 이름을 표시한다는 것입니다.
``
-나중에 다른 변수에 지정된 명령을 인용하는 데 사용됩니다.
작은 따옴표는 문자 그대로 사용되는 값을 묶습니다. 모든 유형의 확장이 억제됩니다. 일반적으로 값이 포함되어있는 경우 사용 또는 공백 (공백, 탭, 개행) 또는 특수 문자 (포함 $
, \
, `
사용자가 / 확장 쉘에 의해 특별하게 취급하고 싶지 않은 것을 참조).
큰 따옴표는 변수와 문자 교체가 수행되는 값을 묶습니다. 출력에 공백이 포함될 수 있고 단일 값으로 지정되어야 할 때 필요합니다.
역 따옴표는 명령을 포함하며 그 결과는 값으로 요구됩니다. 최신 쉘 $(...)
은 대신에 사용할 수 있습니다 `...`
. 나는 새로운 방법을 선호합니다.
다음 코드는 무슨 일이 일어나고 있는지 이해하는 데 도움이 될 수 있습니다.
CMD = 'ls.' 에코 스퀘어 : $ CMD $ CMD 설정 에코 1 차 : $ 1 반향 : $ * "$ CMD"설정 에코 dq : $ 1 에코 bq :`$ CMD` 새로운 에코 : $ ($ CMD)
\
작은 따옴표로 묶을 때는 항상 앞에 문자가 포함되어 있어도 문자 그대로 처리됩니다'
. 여는 후'
다음'
은 항상 닫는 따옴표로 해석됩니다.'
작은 따옴표로 묶은 문자열에서 인용하는 것과 같은 것은 인용을 끝내고'
개별적으로 탈출 한 다음 다시 인용을 시작하여 얻을 수 있습니다 . 즉,\'
여는'
문자 와 닫는 문자 사이에는 작동하지 않지만 그렇지'\''
않습니다. (참고 질 의 내가 같은 실수를했던 내 게시물 중 하나 보정 자세한 내용은.)