2019-08-14 09:28:22 -0700, Kaz Kylheku (Coreutils):
> According to POSIX, echo doesn't take options. It is specified
> that "Implementations shall not support any options."
> (We have options, though,  so things are complicated.)

The POSIX specification of "echo" is going to change in a future
version. See: http://austingroupbugs.net/view.php?id=1222
and http://austingroupbugs.net/view.php?id=1222#c4375 for the
accepted new text.

In short, except when they implement the XSI option (which they
need to to claim the UNIX trademark) implementations are going to
be allowed to support a "-e", "-n" or "-E" option (but still not
"--"/"-" to mark the end of option) and their behaviour will
still be unspecified if any argument contains a backslash
character (in practice, most implementations also fail if those
arguments contain a multibyte character whose encoding contains
byte 0x5c, which happens to be the ASCII encoding of backslash)

Implementations that support an end of option marker include the
"echo" builtin of zsh ("-", formerly "--"), fish ("--"), Byron
Rakitzis clone of "rc" for Unix ("--") and its derivatives (es,

With GNU "echo" (and GNU "env"), you can output "-n" or
arbitrary $data with:

env -u POSIXLY_CORRECT echo -En "$data


Reply via email to