Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > gnu.bash.bug > #11319

Re: Enhancement: bash should have uniform escape syntaxes for `echo -e`, `printf` and `$'ANSI_C_style_escape'`.

From Chet Ramey <chet.ramey@case.edu>
Newsgroups gnu.bash.bug
Subject Re: Enhancement: bash should have uniform escape syntaxes for `echo -e`, `printf` and `$'ANSI_C_style_escape'`.
Date 2015-08-10 16:56 -0400
Message-ID <mailman.8095.1439240228.904.bug-bash@gnu.org> (permalink)
References <523431b6.2c9.14f18e12b67.Coremail.arthur200126@163.com>

Show all headers | View raw


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/

Back to gnu.bash.bug | Previous | Next | Find similar


Thread

Re: Enhancement: bash should have uniform escape syntaxes for `echo -e`, `printf` and `$'ANSI_C_style_escape'`. Chet Ramey <chet.ramey@case.edu> - 2015-08-10 16:56 -0400

csiph-web