"$" 문자를 이스케이프하기 위해 백슬래시를 사용할 때 echo 명령에 "-e" 옵션이 필요하지 않은 이유

"$" 문자를 이스케이프하기 위해 백슬래시를 사용할 때 echo 명령에 "-e" 옵션이 필요하지 않은 이유

이것은 bash 내장에 관한 것입니다 echo. Bash 문서에 따르면 이 -e옵션은 백슬래시 이스케이프를 해석할 수 있습니다.
실행하면 echo "Total Amount \$500"예상되는 출력이 표시됩니다 Total Amount $500. 여기서는 해당 옵션을 사용하지 않고 백슬래시를 사용하여 "$" 문자를 이스케이프할 수 있습니다 -e. 하지만 새 줄이나 탭을 이스케이프하려면 명령에 다음과 같은 옵션이 필요합니다 -e.echoecho -e "Total Amount: \n \$500"

답변1

bash 매뉴얼에서는 echo스위치와 함께 사용하는 방법에 대해 다음과 같이 설명합니다 -e.

-e 옵션이 제공되면 다음 백슬래시 이스케이프 문자를 해석할 수 있습니다.

"를 지정합니다.다음과 같은백슬래시 이스케이프 문자"를 입력한 다음 나열합니다.

\a
alert (bell)

\b
backspace

\c
suppress further output

\e
\E
escape

\f
form feed

\n
new line

\r
carriage return

\t
horizontal tab

\v
vertical tab

\\
backslash

\0nnn
the eight-bit character whose value is the octal value nnn (zero to three octal digits)

\xHH
the eight-bit character whose value is the hexadecimal value HH (one or two hex digits)

\uHHHH
the Unicode (ISO/IEC 10646) character whose value is the hexadecimal value HHHH (one to four hex digits)

\UHHHHHHHH
the Unicode (ISO/IEC 10646) character whose value is the hexadecimal value HHHHHHHH (one to eight hex digits)

실제로는 ( )보다 ( )에 더 가깝기 때문에 혼란스러울 수 있습니다 escape sequence.escape characterescape character\

이스케이프 시퀀스

이스케이프 시퀀스는 문자 또는 문자열 리터럴 내에서 사용될 때 자체적으로 표현되지 않지만 직접 표현하기 어렵거나 불가능할 수 있는 다른 문자 또는 문자 시퀀스로 변환되는 문자 시퀀스입니다.

이스케이프 문자

컴퓨팅 및 통신에서 이스케이프 문자는 일련의 문자에서 후속 문자에 대한 대체 해석을 호출하는 문자입니다. 이스케이프 문자는 메타문자의 특별한 경우입니다. 일반적으로 말해서, 이스케이프 문자인지 여부는 상황에 따라 결정됩니다.

-e옵션은 이스케이프 문자와는 거의 관련이 없지만 위의 문자와 함께 사용하여 sequences특별한 의미를 갖는 것으로 해석될 수 있도록 합니다.

답변2

문자열 변환에는 두 단계가 있습니다.

  1. 먼저 bash는 명령줄을 구문 분석 하고 두 개의 인수를 사용하여 명령을 echo -e "Total Amount: \n \$500"호출해야 한다고 결정합니다 . echo첫 번째 매개변수는 입니다 -e. 두 번째 매개변수는 큰따옴표로 묶인 리터럴을 확장한 결과입니다 "Total Amount: \n \$500". 큰따옴표로 묶인 문자열의 규칙을 고려하면 \$은 이고 $유지 \n되므로 명령 \n에 전달되는 echo두 번째 인수 는 입니다 Total Amount: \n $500.
  2. 모드에서 echo 명령은 -e백슬래시로 시작하는 일부 시퀀스를 개행 문자와 같은 단일 문자로 바꿉니다 \n.

"이스케이프"는 귀하의 질문에서 두 가지 다른 의미를 의미합니다. 첫 번째 단계에서 \$"escape"의 백슬래시는 문자가 특수 처리를 이스케이프하고 그대로 유지됨을 $의미합니다 . $두 번째 단계에서 백슬래시는 \n일반 처리를 "이스케이프"하여 일부 특수 처리를 적용하여 n개행 문자를 생성합니다.

1 백 슬래시 뒤에 오는 문자는 "$\`두 번째 문자가 됩니다. 백슬래시 뒤에 오는 다른 모든 문자는 유지됩니다.
² 백슬래시 뒤에 숫자가 오는 것은 제어 문자가 됩니다. 백슬래시 뒤에 그 중 하나가 오는 문자는 xuU16진수와 동일한 효과를 갖습니다. 그 뒤에 다른 문자가 오면 두 번째 문자가 됩니다.

관련 정보