Bash 스크립트에서 큰따옴표를 이스케이프하세요

Bash 스크립트에서 큰따옴표를 이스케이프하세요

고급 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:

문자를 큰따옴표로 묶으면 $, `, \, [...]를 제외하고 따옴표 안의 모든 문자의 리터럴 값이 유지됩니다. 백슬래시는 $, ` , ", \ 또는 개행 문자 중 하나가 뒤에 오는 경우에만 특별한 의미를 유지합니다.

관련 정보