[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Enhancement: bash should have uniform escape syntaxes for `echo -e`,
From: |
Chet Ramey |
Subject: |
Re: Enhancement: bash should have uniform escape syntaxes for `echo -e`, `printf` and `$'ANSI_C_style_escape'`. |
Date: |
Mon, 10 Aug 2015 16:56:52 -0400 |
User-agent: |
Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:38.0) Gecko/20100101 Thunderbird/38.0.1 |
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 chet@case.edu http://cnswww.cns.cwru.edu/~chet/