Re: redirection

From: Oliver Fromme <olli(at)lurza.secnetix.de>
Date: Mon, 10 Jan 2005 16:02:36 +0100 (CET)

till toenges <tt(at)mail.isis.de> wrote:
> Oliver Fromme wrote:
> > Manfred Lotz <manfred.lotz(at)web.de> wrote:
> > > Ja klar. echo schreibt ja auch sowieso nur auf stdout.
> >
> > Nein -- Wenn ein Fehler auftritt, werden diagnostische Mel-
> > dungen nach stderr geschrieben. Genau das ist der Grund,
> > weshalb man das "2>&1" weglassen sollte. Sonst wär's ja
> > egal.
>
> Sauberer ist es auf jeden Fall, aber welches echo gibt den diagnostische
> Meldungen aus?

Kannst Du es ausschließen, daß es ein echo gibt, das dia-
gnostische Meldungen ausgibt? Wenn Du portable Skripte
schreiben willst, mußt Du damit rechnen, daß sowas passie-
ren kann. Die Meldungen müssen ja auch nicht einmal vom
echo-Code selbst kommen, sondern können aus der libc stam-
men, wenn eine libc-Funktion schiefgeht.

SUSv3 erwähnt explizit, daß diagnostische Meldungen auf
stderr ausgegeben werden können.

> > Übrigens ist »echo« mehr oder weniger obsolete. Es wird
> > empfohlen, für portable Skripte besser »printf« zu verwen-
> > den.
>
> Ok, das ist der wirklich interessante Teil der Mail. Warum ist printf zu
> bevorzugen? Posix, um mal einen halbwegs "portablen" Standard zu nehmen,
> definiert beide,

SUSv3 bzw. IEEE Std 1003.1-2001 (a.k.a. »POSIX«) definieren
beide, aber echo ist dort nur noch enthalten, weil (Zitat)
»because of its extremely widespread use in historical
applications.« Und: »New applications are encouraged to
use printf instead of echo.«

> und für die typischen Statusmeldungen und sonstigen
> einfachen Strings etc. scheint echo doch gut geeignet.

Nur, wenn Du garantieren kannst, daß in der Ausgabe kein
"-n", "--" usw. vorkommen, und auch keine Backslashes,
was schon oft ein Problem wird, sobald Variablen in der
Ausgabe vorkommen ("$somevar" in Deinem Beispiel).
Anderenfalls funktioniert es nicht portabel.

> Es gibt zwar bei den einzelnen Implementationen von echo Unterschiede,
> z.B. die (nicht) Unterstützung der Option -n, aber das ist bei printf
> doch sicher kaum besser?

Doch.

> Konnte noch keine gute Erklärung finden, obwohl ich das jetzt schon
> öfters gelesen habe.

Im Abschnitt über »echo« von SUSV3 / POSIX ist die ganze
Angelegenheit recht ausführlich erläutert.

Gruß
   Olli

-- 
Oliver Fromme, secnetix GmbH & Co KG, Oettingenstr. 2, 80538 München
Any opinions expressed in this message may be personal to the author
and may not necessarily reflect the opinions of secnetix in any way.
"The ITU has offered the IETF formal alignment with its
corresponding technology, Penguins, but that won't fly."
        -- RFC 2549
To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Mon 10 Jan 2005 - 16:03:21 CET

search this site