고급 Bash 스크립팅 가이드를 읽는 동안 이 주제에 대해 혼란스러워졌습니다. 책에 따르면,
Bash 스크립팅에서는 문자열을 인용할 때 문자열을 분리하고 문자 그대로의 의미를 보호합니다.
그리고
이스케이프는 개별 문자를 인용하는 방법입니다. 문자 앞의 이스케이프 문자(\)는 쉘이 문자 그대로 해석하도록 지시합니다.
이것은 "기능적" 문자인 것처럼 보이지만 \
큰따옴표 안에도 포함되어 있으면 어떻게 될까요? 문자 그대로 받아들일 것인가 \
, 아니면 여전히 이스케이프될 것인가? 예를 들어,
echo \z # z
echo "\z" # \z seems that the backslash is taken literally
echo \\ # \
echo "\\" # \ so why this result is not \\ ?
답변1
man bash
:
문자를 큰따옴표로 묶으면 $, `, \, [...]를 제외하고 따옴표 안의 모든 문자의 리터럴 값이 유지됩니다. 백슬래시는 $, ` , ", \ 또는 개행 문자 중 하나가 뒤에 오는 경우에만 특별한 의미를 유지합니다.