수색…
통사론
- \ C (개행을 제외한 한 문자)
- '작은 따옴표를 제외한 모든 문자 그대로'; 'this :'\ ''는 작은 따옴표입니다. '
- $ '만 \\과 \'는 특별합니다. \ n = 개행 등. '
- "$ 변수 및 기타 텍스트; \"\\\ $ \ "는 특수"
개행 문자 및 제어 문자
개행 문자는 단일 문자열이나 큰 따옴표로 묶은 문자열에 포함될 수 있습니다. backslash-newline은 줄 바꿈을하지 않으며 줄 바꿈은 무시됩니다.
newline1='
'
newline2="
"
newline3=$'\n'
empty=\
echo "Line${newline1}break"
echo "Line${newline2}break"
echo "Line${newline3}break"
echo "No line break${empty} here"
달러 인용 문자열 안에는 백 슬래시 문자 또는 백 슬래시 8 진수를 사용하여 다른 많은 프로그래밍 언어와 마찬가지로 제어 문자를 삽입 할 수 있습니다.
echo $'Tab: [\t]'
echo $'Tab again: [\009]'
echo $'Form feed: [\f]'
echo $'Line\nbreak'
변수 및 명령 대체에 대한 큰 따옴표
가변 치환은 큰 따옴표 안에 사용해야합니다.
calculation='2 * 3'
echo "$calculation"         # prints 2 * 3
echo $calculation           # prints 2, the list of files in the current directory, and 3
echo "$(($calculation))"    # prints 6
 따옴표의 외부, $var 값 소요 var 공백으로 구분 된 부분으로 분할하고, 글로브 (와일드 카드) 패턴으로 각 부분을 해석합니다. 이 동작을 원한다면 항상 $var 를 큰 따옴표 안에 넣으십시오 : "$var" . 
 명령 대체에도 동일하게 적용됩니다. "$(mycommand)" 는 mycommand 의 출력이고 $(mycommand) 는 split + glob 결과입니다. 
echo "$var"             # good
echo "$(mycommand)"     # good 
another=$var            # also works, assignment is implicitly double-quoted
make -D THING=$var      # BAD! This is not a bash assignment.
make -D THING="$var"    # good
make -D "THING=$var"    # also good
 명령 대체는 자신의 인용 컨텍스트를 가져옵니다. 파서가 탐욕 최초의 검색 대신 중첩 깊이를 추적하기 때문에 임의의 중첩 대체를 작성하는 것은 쉽다 " 문자 StackOverflow의 구문 형광펜 예를 들어 있지만, 이것은 잘못된 구문 분석합니다.. : 
echo "formatted text: $(printf "a + b = %04d" "${c}")" # “formatted text: a + b = 0000”
명령 대체에 대한 변수 인수는 확장 내에서 큰 따옴표로 묶어야합니다.
echo "$(mycommand "$arg1" "$arg2")"
리터럴 텍스트 인용
이 단락의 모든 예제는 행을 인쇄합니다.
!"#$&'()*;<=>?  @[\]^`{|}~
백 슬래시는 다음 문자를 인용합니다. 즉, 다음 문자는 문자 그대로 해석됩니다. 하나의 예외는 개행 문자입니다. 백 슬래시 - 개행 문자는 빈 문자열로 확장됩니다.
echo \!\"\#\$\&\'\(\)\*\;\<\=\>\?\ \ \@\[\\\]\^\`\{\|\}\~
 작은 따옴표 사이의 모든 텍스트는 (앞으로 인용 ' 도 어포 스트로피로 알려진) 그대로 인쇄됩니다. 백 슬래시조차도 그 자체를 의미하며 작은 따옴표를 포함하는 것은 불가능합니다. 대신 리터럴 문자열을 중지하고 리터럴 작은 따옴표를 백 슬래시와 함께 포함하고 리터럴 문자열을 다시 시작할 수 있습니다. 따라서 4 문자 시퀀스 '\'' 는 리터럴 문자열에 작은 따옴표를 포함 할 수 있습니다. 
echo '!"#$&'\''()*;<=>?  @[\]^`{|}~'
#          ^^^^
 Dollar-single-quote는 백 슬래시가 다음 문자를 인용하는 많은 다른 프로그래밍 언어와 마찬가지로 문자열 리터럴 $'…' 시작합니다. 
echo $'!"#$&\'()*;<=>?  @[\\]^`{|}~'
#           ^^            ^^
 큰 따옴표는 " 반 리터럴 문자열 문자 만 구분 " \ $ 와 ` 유지 그들의 특별한 의미를. 이 문자 앞에는 백 슬래시가 있어야합니다 (백 슬래시 뒤에 다른 문자가 오면 백 슬래시가 남음). 큰 따옴표는 변수 또는 명령 대체를 포함 할 때 주로 유용합니다. 
echo "!\"#\$&'()*;<=>?  @[\\]^\`{|}~"
#      ^^                 ^^  ^^
echo "!\"#\$&'()*;<=>?  @[\]^\`{|}~"
#      ^^                 ^  ^^      \[ prints \[
 대화식으로 조심하십시오 ! 큰 따옴표 안에 히스토리 확장을 시작합니다 : "!oops" 는 oops 포함하는 오래된 명령을 찾습니다; "\!oops" 는 기록 확장을하지 않지만 백 슬래시를 유지합니다. 이것은 스크립트에서 발생하지 않습니다. 
큰 따옴표와 작은 따옴표의 차이점
| 큰 따옴표 | 작은 따옴표 | 
|---|---|
| 변수 확장 허용 | 변수 확장 방지 | 
| 활성화 된 경우 기록 확장을 허용합니다. | 역사 확대 방지 | 
| 명령 대체를 허용합니다. | 명령 대체 방지 | 
| *와@는 특별한 의미를 가질 수 있습니다. | *와@는 항상 리터럴입니다. | 
| 작은 따옴표 나 큰 따옴표를 모두 포함 할 수 있습니다. | 작은 따옴표 안에 작은 따옴표를 사용할 수 없습니다. | 
| $,`,",\는 특별한 의미를 갖지 않으려면\로 이스케이프 처리 할 수 있습니다. | 모두 리터럴입니다. | 
둘 다 공통적 인 속성 :
- 글로빙 방지
- 단어 분리를 방지합니다.
예 :
$ echo "!cat"
echo "cat file"
cat file
$ echo '!cat'
!cat
echo "\"'\""
"'"
$ a='var'
$ echo '$a'
$a
$ echo "$a"
var