On 8/10/15 2:30 PM, Arthur200000 wrote: > Bash Version: 4.3 > Patch Level: 30 > Release Status: release > > Description: > Bash has different escape syntaxes for `echo -e`, `printf` and > `$'ANSI_C_style_escape'`. Take a specific point, `printf` and `$'C_Style'` > accepts octals not starting with 0, but `echo -e` doesn't. > This is causing quite a lot of confusion.
They are different because they are supposed to be different according to the relevant standards. echo -e and the xpg_echo shell option expand the escape sequences that Posix specifies: http://pubs.opengroup.org/onlinepubs/9699919799/utilities/echo.html#tag_20_37 with the addition of \e, \E, and \xHH. Posix requires the leading 0. printf expands the escape sequences that Posix specifies: http://pubs.opengroup.org/onlinepubs/9699919799/utilities/printf.html#tag_20_94 (note that printf %b is supposed to behave like echo) The $'...' string expansion behaves like ANSI-C, which just uses one to three octal digits for octal numbers. It adds support for \e and \E, as well as \c. There is a proposal to add this to the next version of Posix which retains this behavior. (And as for Apple's bash-3.2, they modified bash to behave as it does. Bash-3.2 as distributed understands \e in the echo format string.) -- ``The lyf so short, the craft so long to lerne.'' - Chaucer ``Ars longa, vita brevis'' - Hippocrates Chet Ramey, ITS, CWRU c...@case.edu http://cnswww.cns.cwru.edu/~chet/