bug-bash
[Top][All Lists]
Advanced

[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/



reply via email to

[Prev in Thread] Current Thread [Next in Thread]