리눅스 쉘에서 문자 이스케이프 처리에서 어떤 일이 일어나고 있는지 설명 할 수 있습니까? 나는 무엇을 어떻게하는지 이해하는 데 성공하지 않고 다음을 시도하고 많은 것을 봤다.
root@sv01:~# echo -e "\ Hello!"
\ Hello!
root@sv01:~# echo -e "\\ Hello!"
\ Hello!
root@sv01:~# echo -e "\\\ Hello!"
\ Hello!
root@sv01:~# echo -e "\\\\ Hello!"
\ Hello!
root@sv01:~# echo -e "\\\\\ Hello!"
\\ Hello!
root@sv01:~# echo -e "\\\\\\ Hello!"
\\ Hello!
root@sv01:~# echo -e "\\\\\\\ Hello!"
\\ Hello!
root@sv01:~# echo -e "\\\\\\\\ Hello!"
\\ Hello!
root@sv01:~# echo -e "\\\\\\\\\ Hello!"
\\\ Hello!
root@sv01:~# echo -e "\n Hello!"
Hello!
root@sv01:~# echo -e "\\n Hello!"
Hello!
root@sv01:~# echo -e "\\\n Hello!"
\n Hello!
나는 거기에서 완전히 잃어 버렸습니다. 예를 들어, 왜 세 개의 백 슬래시가 하나의 백 슬래시를 제공합니까? 나는 기대할 것입니다 : 첫 번째 두 개는 하나로 탈출 할 것이고, 세 번째는 탈출 할 것이 없으므로 슬래시 (첫 번째 실험에서 줄)로 남아 있지만 세 번째 것은 사라집니다.
왜 4에서 1 개의 백 슬래시가 발생 \\\\ Hello
합니까? 각 쌍이 백 슬래시 하나-> 두 개의 백 슬래시를 줄 것으로 기대합니다.
그리고 왜 \ n 탈출하기 위해 마지막 경우에 세 개의 백 슬래시가 필요합니까? 그것을 얻기 위해 탈출의 배경에서 무슨 일이 일어나고 있습니까? \\n
케이스 와 어떻게 다릅니 까?
이전 행에서 무슨 일이 일어나고 있는지에 대한 설명에 감사드립니다.
echo -e
안전하지 않습니다 : 런타임 옵션 과 런타임 옵션이 모두 활성화되어 있거나 동등한 빌드 타임 옵션으로 컴파일 된 경우 echo
표준에 따라 동작합니다 . 안전한 방법은 대신 사용하는 것입니다. 위의 링크에서 APPLICATION USAGE 및 RATIONALE 섹션을 대신 하여 대체 기능을 수행 하는 방법을 설명하십시오 . posix
xpg_echo
printf
printf
echo
echo -e
동작은 어쨌든 표준으로 정의되지 않습니다 . pubs.opengroup.org/onlinepubs/9699919799/utilities/echo.html을 참조하십시오 . 입력 어디에나 리터럴 백 슬래시가 있으면 출력이 완전히 구현 정의 되며 허용되는 유일한 옵션은-n
(표준 호환 구현이echo -e
출력-e
에 인쇄 됨을 의미 )입니다.