Roland M. Kruggel:
>ich muss über Dateien die im /tmp liegen iterieren.
>ein
> FILES=`ls /tmp/*.name.ext`
>funktioniert eigentlich ganz gut. So lange mindestens ein file
>vorhanden ist. Sonst steigt ls mit einer feglermeldung aus.
Achtung: Das funktioniert nur, wenn Dateinamen keine
White-Space-Zeichen enthalten. Und das kannst du in /tmp, wo
jeder Dateien erzeugen kann, nicht ausschließen!
Sauber geht's so:
Annahme: Der Kommandointerpreter ist bourne-shell- oder
posix-shell-kompatibel:
# Liste der positional Parameters leeren:
set ''; shift
for file in /tmp/*.name.ext
do
# stelle mit sicher, dass Datei wirklich vorhanden:
test -e "$file" && set -- ${1+"$@"} "$file"
done
# Jetzt sind die gefundenen Namen in $@, der Liste der positional
# Parameters und die Anzahl in $#
Warum ist es innerhalb der Schleife nötig, zu überprüfen, ob der
"gefundene" Name wirklich vorhanden ist?
Antwort: Wenn das Bourne-Shell zu einem Dateinamens-Muster in
einer Parameterliste oder in einem For-Schleifen-Kopf keine Datei
findet, wird das Muster nicht aus der Liste entfernt sondern
unverändert in die Liste gesetzt, d.h. wenn keine Datei gefunden
wurde, enthält die Liste das eine Wort '/tmp/*.name.ext'
--
Bitte in die Adressierung auch meinen|Please put my full name also into
Vor- u. Nachnamen stellen z.B. |the recipient like
Friedhelm Waitzmann <[EMAIL PROTECTED]>, (Friedhelm Waitzmann) [EMAIL
PROTECTED],
"Waitzmann, Friedhelm" <[EMAIL PROTECTED]>
--
Haeufig gestellte Fragen und Antworten (FAQ):
http://www.de.debian.org/debian-user-german-FAQ/
Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED]
mit dem Subject "unsubscribe". Probleme? Mail an [EMAIL PROTECTED] (engl)