옵션

  • --help: 도움말을 출력한다.
  • -n: 뒤따라 오는 개행문자(trailing newline)를 제거하고 출력한다.
  • -E: -e 옵션을 무시한다.
    • 기본값.
  • -e: 백슬래시로 시작하는 이스케이프 시퀀스를 해석해 출력에 적용한다.
    • \\: backslash
    • \a: alert (BEL)
    • \b: backspace
    • \c: produce no further output
    • \e: escape
    • \f: form feed
    • \n: new line
    • \r: carriage return
    • \t: horizontal tab
    • \v: vertical tab
    • \0NNN: byte with octal value NNN (1 to 3 digits)
    • \xHH: byte with hexadecimal value HH (1 to 2 digits)

주의사항

echo는 이식성에 좀 문제가 있으므로, 여러 플랫폼에서 사용하려 한다면 printf를 쓰는 것도 고려할 것.

한편, macOS의 echo는 잘 작동하긴 하는데 [[/cmd/man]]{man 페이지}가 뭔가 좀 이상하다.

man echo를 해봐도 -e 옵션은 소개하지 않고 -n 옵션만 소개를 하는데, 실제로 사용해보면 -e도 잘 작동한다.

찝찝하다면 [[/cmd/gnu-coreutils]]를 설치해서 사용하는 것도 방법이다.

Examples

$ echo "a\nb\nc"
a\nb\nc

$ # -e 옵션을 사용하면 \n 을 개행문자로 해석한다.
$ echo -e "a\nb\nc"
a
b
c
$ # -n 옵션 없이 사용하면 echo는 마지막에 개행문자를 출력한다.
$ echo "hello " && echo "123" && echo "  END"
hello 
123
  END

$ # -n 옵션은 마지막의 개행문자를 출력하지 않는다.
$ echo -n "hello " && echo -n "123" && echo -n "  END  "
hello 123  END  
$ # \b(백스페이스) 사용
$ echo -e "abc\bd"
abd

$ # \xHH 로 16진수 문자를 출력할 수 있다.
$ echo -e "a\x48b"
aHb

셸 스크립트에서 사용

셸 스크립트에서 에러 메시지를 출력할 용도로 사용한다면 2로 리다이렉션하는 식으로 종종 쓴다.

if [ $# -ne 1 ] ; then
    echo "인자의 수는 1개여야 합니다." >&2
    exit 1
fi