Subject: Re: Answer to "which echo.c"
To: None <current-users@netbsd.org>
From: der Mouse <mouse@Rodents.Montreal.QC.CA>
List: current-users
Date: 12/09/1999 14:33:43
> I expected the thread to digress into "but how do you just echo
> '-n'??" but recognize that this isn't very important.
Actually, it's important mainly for compatability. If a script written
for BSD wants to echo something ending in the two characters "\c", it
breaks badly with a SV-compatible echo; similarly, a written-for-SV
script that tries to echo "-n" breaks with a BSD-compatible echo.
> - A few differences [...], except for the '\c' compatibility, which
> only one version supports. WHY? [...] it's easy to create
> compatibility in small utilities like this one, yet only one bsd out
> of three allowed SYSV scripts to not bug.
*None* of them works in a SysV-compatible way. SysV "echo -n -i" will
produce six bytes of output, "-n -i" and a newline. None of the
versions you quoted will do that. And one of them breaks with BSD
compatability when handed a command-line ending with the two characters
"\c" (and doesn't even do the SysV-compatible thing wrt processing
other backslash escapes).
> Note that SYSV compatibility allows use of:
> echo Yes or No? \c
> which will not output newline.
Try it. You need to write
echo Yes or No\? \\c
or something else that quotes the ? and \. (Some shells, such as sh,
won't need to quote the ? if "No?" doesn't glob to any files.)
der Mouse
mouse@rodents.montreal.qc.ca
7D C8 61 52 5D E7 2D 39 4E F1 31 3E E8 B3 27 4B