Re: Shell-Programmierung

From: Oliver Fromme <olli(at)secnetix.de>
Date: Wed, 23 Apr 2003 18:15:39 +0200 (CEST)

Joerg Over <over(at)dexia.de> wrote:
> Am 15:43 23.04.2003 +0200 teilte Oliver Fromme mir folgendes mit:
> ->Joerg Over <over(at)dexia.de> wrote:
> -> > ( kommando1 ) && ( kommando1 | kommando2 ) || exit
> -> >
> -> > Ein paar Klammern kann mann ggf. weglassen.
> ->
> -> .. beziehungsweise besser durch geschweife Klammern er-
> -> setzen, und die Ausgabe des ersten Kommandos sollte man
> -> nach /dev/null wegleiten, sonst müllt es das Terminal zu:
>
> Ich wusste zu wenig über kommando1 um zu bestimmen ob der Output
> störend ist, daher hab' ich die Umleitung weggelassen. kommando1
> hätte nach der dürftigen bzw. fehlenden Beschreibeng
> möglicherweise überhaupt keinen output, oder sein output könnte
> sogar bereits umgeleitet sein...

Nein, das kann nicht sein, sonst würde es ja keinen Sinn
ergeben, seine Ausgabe in Kommando2 pipen zu wollen.

> ->kommando1 >/dev/null && { kommando1 | kommando2;} || exit 1
> ->
> -> > Nachteil: kommando1 wird 2mal aufgerufen, natürlich.
> ->
> ->Ja, deswegen hatte ich das erst gar nicht vorgeschlagen,
> ->weil ich davon ausging, daß das unerwünschte Nebeneffekte
> ->hätte, und außerdem muß das Kommando ja nicht bei beiden
> ->Aufrufen das gleiche Ergebnis und den gleichen Exit-code
> ->liefern (mal ganz davon abgesehen, daß es ineffizient ist).
>
> Unerwünschte Nebenwirkungen bzw. abweichendes Ergebnis/Exitcode
> sind m.E. mit geschweiften Klammern wahrscheinlicher, eben weil
> das Environment in dem Fall bei der zweiten Ausführung geändert
> sein könnte.

Ehm, nein, wieso sollte das dort wahrscheinlicher sein?
Das Environment sollte exakt das gleiche sein. Es gibt
keinen Grund, für die Pipe eine xplizite Subshell aufzu-
machen.

> wie möglicherweise die nur einmalige Ausführung von kommando1
> effizienter ist trotz des PlattenIO durch die temporäre Datei...

Die temporäre Datei erzeugt vermutlich keinen Platten-I/O,
es sei denn, Kommando1 erzeugt sehr viel Ausgabe, oder es
läuft sehr lange, was wiederum ein Grund dafür wäre, es
nur einmal laufen zu lassen.

> Ist nicht so dass ich nicht drüber nachgedacht hätte :)

Das habe ich auch nicht unterstellt. :-)

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.
"Der Einsatz von MS-Mailsystemen ist sehr erfolgreich, aber
leider vor allem bei der Verbreitung von Viren wie Melissa,
Papa oder explore.zip.  Dies ist durchaus auch in der
Architektur dieser Software begruendet."  (unbekannt)
To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Wed 23 Apr 2003 - 18:15:43 CEST

search this site