Re: Shell-Programmierung

From: Joerg Over <over(at)dexia.de>
Date: Wed, 23 Apr 2003 16:49:41 +0200

Hi!

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...

->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. Klar, geschweifte Klammern (zur Erklärung für Peter
Ross: bei runden Klammern wird eine Subshell mit dem Befehl
gestartet, bei geschweiften wird der Befehl im gegenwärtigen
Environment durchgeführt) sind per se erstaml effizienter, ebenso
wie möglicherweise die nur einmalige Ausführung von kommando1
effizienter ist trotz des PlattenIO durch die temporäre Datei...
möglicherweise aber auch nicht; auch das konnte ich mangels Info
über die Kommandos nicht bestimmen. Auch das hab' ich ja erwähnt.

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

Grüsse, jo

-- 
+-----------------------------------------------------------------
--+
|  __ __ __ __ _ _          just another pointless signature
  |
| / _ \ V / -_) '_/
  |
| \___/\_/\___|_|
  |
+-----------------------------------------------------------------
--+
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 - 16:49:46 CEST

search this site