-e
Bash 4에서 변수에 할당 하려고 합니다 . 그러나 변수는 여전히 비어 있습니다.
예를 들어:
$ var="-e"
$ echo $var
$ var='-e'
$ echo $var
$ var="-t"
$ echo $var
-t
왜 작동 -t
하지만 작동하지 않습니까 -e
?
답변1
작동하지만 echo -e
두 옵션을 모두 활성화하지 않으면 Bash에서 실행하면 아무것도 출력되지 않습니다. 그러면 옵션으로 해석됩니다.posix
xpg_echo
-e
$ help echo
echo: echo [-neE] [arg ...]
Write arguments to the standard output.
Display the ARGs, separated by a single space character and followed by a
newline, on the standard output.
Options:
-n do not append a newline
-e enable interpretation of the following backslash escapes
-E explicitly suppress interpretation of backslash escapes
사용
printf "%s\n" "$var"
대신에.
주석에서 지적했듯이 Bash declare -p var
( typeset -p var
ksh, zsh 및 yash(bash 포함))를 사용하여 변수의 정확한 유형과 내용을 알 수 있습니다.
답변2
명령(예: 귀하의 경우 echo
)은 명령줄 인수를 사용하며 이는 플래그( -e
귀하의 경우)일 수 있습니다. 많은 명령(적어도 일반적인 Linux 버전)은 --
(두 개의 하이픈)을 "플래그의 끝이며 다음 내용은 일반 매개변수"로 이해합니다. 따라서 비정상적으로 이름이 지정된 -r
파일을 삭제할 수 있습니다 rm -- -r
.
콘텐츠를 표시하는 데 더 강력합니다(사용하기 어려울 경우) printf
.