`echo` has many portability problems, the `-e` and `-n` flags should never be used and escapes in a string passed to `echo` behave inconsistently across shells. Therefore it can only be used in very simple cases -- rather than make that distinction I like to just recommend `printf` always. `printf` is usually more efficient too.

http://wiki.bash-hackers.org/commands/builtin/echo

http://cfajohnson.com/shell/cus-faq.html#Q0b

http://www.in-ulm.de/~mascheck/various/echo+printf