대학에서 본 쉘 스크립팅 테스트에서 다음과 같은 질문을 받았지만 답변을 얻지 못했고 Google은 거의 도움이 되지 않았습니다.
묻다:이 여기 문서를 끝내는 데 사용되는 줄 구분 기호는 무엇입니까?
fff=file
xyz <<\\$fff
...
답변1
여기서 문서가 끝나는 줄은 다음과 같습니다.
\$fff
man bash
여기 문서 섹션 에서 :
이 문서의 형식은 다음과 같습니다.
<<[-]word
here-document
delimiter
매개변수 없음 및 변수 확장, 명령 대체, 산술 확장 또는 경로 이름 확장단어 그대로 실행. Word에 인용된 문자가 있는 경우 구분 기호는 Word에서 인용문을 제거한 결과이며 문서의 줄은 여기에서 확장되지 않습니다. 단어가 인용되지 않은 경우 문서의 모든 행은 매개변수 확장, 명령 대체 및 산술 확장을 거치며 문자 순서는 \newline무시되며 \인용 문자 \, $및 를 사용해야 합니다 `.
word
따옴표 제거를 수행하므로 \\$fff
로 역참조됩니다 \$fff
. 그러나 매뉴얼 페이지에 나와 있듯이 변수 확장이 수행되지 않으므로 그대로 유지됩니다.
변수 확장 및 백슬래시 해석은 이 문서의 본문에서 수행될 수도 있고 수행되지 않을 수도 있습니다. 이 경우 word
매개변수 확장 및 백슬래시 백틱은 다음과 같습니다.아니요이 문서의 텍스트를 실행합니다.
\그러나 입력은 변수가 확장되기 전에 종료 시퀀스와 비교되므로 종료 라인에서 및 백슬래시를 이스케이프 처리 할 필요가 없습니다 .$
답변2
터미네이터는
\$fff
나는 이것이 @rici가 의미한 것이라고 가정합니다. 그의 두 번째 단락에서 말했듯이,
word
따옴표 제거를 수행하므로\\$fff
로 참조 취소됩니다\$fff
. 그러나 매뉴얼 페이지에 명시된 대로 변수 확장이 발생하지 않으므로 그대로 유지됩니다.