PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Probleme mit For-schleife



27-11-2000, 07:52
Hallo,
ich möchte allen Mitarbeiter aus einer Liste, die am heutigen Tag Geburtstag haben eine Mail schicken. Dafür hole ich mir aus der Liste das Geburtsjahr und die EMailadresse, derjenigen, bei denen das Tagesdatum übereinstimmt und schreibe die Informationen in eine separate Liste.
Für jede Zeile wollte ich dann die Emailaddresse in Vor- und Nachnamen zerlegen und nach der Errechnung des Alters die Email schicken. Das ist soweit auch kein Problem.

Mit dem untenstehenden Script wird immer nur der erste Eintrag genommen und dann abgebrochen.
Meine Idee war, aus der erzeugten Liste jeweils den Positionsparameter 1 und 2 zu verwenden, weil in diesen das Jahr und die Emailaddresse stehen und dann mit "Shift 2" auf die nächsten zu springen. Wenn $1 leer ist soll das Script beendet werden.

cat /root/batches/geburtstag/liste | grep "$tag $monat" | cut -f 3,4 > /root/batches/geburtstag/heuteliste

liste=`less /root/batches/geburtstag/heuteliste`
set $liste

abbruch=$(less /root/batches/geburtstag/heuteliste | cut -f 1)

for i in $abbruch
do
# [ "$1" == "" ] && exit 0
....
shift 2
done

Kann mir jemand helfen oder eine laufende Möglichkeit verraten?
MfG,
Werner

thommy
27-11-2000, 09:04
Ich vermute das Problem in "abbruch", da bei der Zuweisung mit "less" die gesamte Datei auf einer Zeile erscheint. Damit wirkt die Pipe "cut -f 1" nur auf ein einziges Element, also wird for... nur einmal durchlaufen. Ändere "less" jeweils in "cat" und es sollte (wenn nicht woanders noch Fehler verborgen sind) funktionieren.

Thomas

27-11-2000, 10:37
Hi Tommy,
das "cat" hatte ich auch schon ausprobiert, leider mit dem gleichen Mißerfolg.
Kann man es noch anders machen?
MfG,
Werner

thommy
27-11-2000, 11:43
Wie sieht Deine "heuteliste" aus? Stehen die Einträge tatsächlich auf einzelnen Zeilen?

Ist der Tabulator das Trennzeichen zwischen den einzelnen Spalten? Wenn nicht, dann musst Du "cut" das Trennzeichen mitteilen (Option -d Trennzeichen), sonst steht die gesamte Zeile im Feld 1.

Mehr Fehlergründe fallen mir momentan nicht ein...

Thomas

28-11-2000, 09:00
Hi Tommy,
ich habe meinen Fehler gefunden, der aus meinem Posting nicht ersichtlich war.
Ich hatte in der For-schleife noch 2 set $variable - Aufrufe, so daß die Postitionsparameter überschrieben wurden.
Ich habe mir mit sichern der Informationen geholfen.
Danke nochmal für die Hilfe, :-)
Werner