Bash에서 변수에 "-e"를 할당하는 방법

Bash에서 변수에 "-e"를 할당하는 방법

-eBash 4에서 변수에 할당 하려고 합니다 . 그러나 변수는 여전히 비어 있습니다.

예를 들어:

$ var="-e" 
$ echo $var

$ var='-e' 
$ echo $var

$ var="-t" 
$ echo $var
-t

왜 작동 -t하지만 작동하지 않습니까 -e?

답변1

작동하지만 echo -e두 옵션을 모두 활성화하지 않으면 Bash에서 실행하면 아무것도 출력되지 않습니다. 그러면 옵션으로 해석됩니다.posixxpg_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 varksh, zsh 및 yash(bash 포함))를 사용하여 변수의 정확한 유형과 내용을 알 수 있습니다.

바라보다:왜 printf가 echo보다 나은가요?

답변2

명령(예: 귀하의 경우 echo)은 명령줄 인수를 사용하며 이는 플래그( -e귀하의 경우)일 수 있습니다. 많은 명령(적어도 일반적인 Linux 버전)은 --(두 개의 하이픈)을 "플래그의 끝이며 다음 내용은 일반 매개변수"로 이해합니다. 따라서 비정상적으로 이름이 지정된 -r파일을 삭제할 수 있습니다 rm -- -r.

콘텐츠를 표시하는 데 더 강력합니다(사용하기 어려울 경우) printf.

관련 정보