> The /bin/echo I used to use in Solaris understand \n and \t stuffs > by default. Is there any trick I can play so that I don't need to > specify the -e parameter for echo?
use printf instead. printing \t \n type things with echo is completly non-portable any more. some echos use echo foo\c for a newline some need -e some don't.
> The reason I'm asking is that debian is the only un*x I've used that > /bin/echo don't interprate \n... by default. I've already wirtten > tons of scripts using /bin/echo. Please help.
hmm Digital UNIX (aka OSF/4) needs -e, OpenBSD /bin/echo needs -e, GNU echo needs -e, bash builtin echo needs -e … (OpenBSD's /bin/sh has a builtin echo which does not need -e but /bin/echo does)
you really can't depend on any echo doing anything consistently unfortunatly. printf on the other hand behaves perfectly consistent on GNU/Linux, OpenBSD, SunOS 5.7, Digital UNIX (OSF/4) and i presume just about everything else (those are all i have access to)
if you don't want to use printf (or can't) you could replace your echo commands with $echo and do a test like so:
if [ `echo "foo\n"` = "foo\n" ] ; then echo="echo -e" else echo="echo" fi
which may or may not be reliable…
my advice is use printf unless your script must work on stripped down systems like rescue floppies or / without /usr mounted. (or anything else abnormal)
Ethan Benson
documented on: 2000.06.02 Fri 03:40:13