Gentoo Archives: gentoo-user-de

From: Klaus Fabritius <kfk@××××××××××.de>
To: gentoo-user-de@l.g.o
Subject: Re: [gentoo-user-de] Re: Bash-Script um id3-Tags auszuwerten
Date: Thu, 19 Jan 2006 11:46:55
Message-Id: 20060119114326.GA16614@mid.wasserhase.de
In Reply to: [gentoo-user-de] Re: Bash-Script um id3-Tags auszuwerten by Christof Schulze
1 * Christof Schulze schrieb:
2
3 > "for i in *.bla verursacht Bauchschmerzen" abzuschwächen, denn auch
4 > diese Methode hat manchmal Vorteile.
5
6 "for i in 'etwas unbekanntes'" hat nur dann Sinn, wenn man genau weiß,
7 daß der Umfang des Gelieferten klein ist. Es hat mämlich einen
8 schwerwiegenden Nachteil: Der Schleifenkopf wird nämlich erst
9 _vollständig_ ausgewertet, bevor der erste Schleifendurchlauf überhaupt
10 stattfindet:
11
12 - Der Resourcenverbrauch ist ggf. enorm.
13 - Je nach Datenmenge und System fliegt einem ARG_MAX um die Ohren.
14 - Falls zwischen do .. done ein Fehler auftritt, dauert es ggf. eine
15 halbe Ewigkeit, bevor darauf reagiert werden kann (interaktiv mit ^C
16 oder im Script durch entsprechende Fehlerbehandlungsroutinen).
17
18 Man kann das einfach nachvollziehen (FOOBAR existiert nicht):
19
20 $> for i in `find /` ; do FOOBAR ; done
21
22 Es wird erstmal alles unterhalb "/" durchsucht, bevor der Fehler
23 ("bash: FOOBAR: command not found") überhaupt auftritt.
24
25 Dagegen werden bei einem "'etwas unbekanntes' | while read" die Daten
26 schön häppchenweise und kontinuierlich durchgereicht. Schont die
27 Resourcen, ARG_MAX spielt keine Rolle und die Fehlerbehandlung kann
28 unmittelbar aktiv werden.
29
30 $> find / | while read i ; do FOOBAR ; done
31
32 Der Fehler tritt sofort auf.
33
34 "for i in 'unknown'" ist einfach, hm, schlechter Stil. Gar nicht erst
35 angewöhnen sowas.
36
37
38 -kfk
39
40
41
42 --
43 Object-oriented design is the roman numerals of computing.
44 Rob Pike, 1991
45 --
46 gentoo-user-de@g.o mailing list