Hi Günther, On Die, 03 Jul 2001 at 17:47 (+0200), Guenther Behrendsen wrote: [Datei zeilenweise lesen]
-----Begin----- #!/bin/sh # Verteiler - Versenden der Files aus einem Verzeichis # # Wichtige Parameter INBOUND="/tmp/distri/vertreter" SUBJECT="Automatische_Mitteilung" LISTE="./empfaenger.txt" ADDRESSE="empty"
# Verwendete Programme UUENCODE="/usr/bin/uuencode" MAIL="/usr/bin/mail" LS="/bin/ls" # vvv--- In der Endfassung durch "/bin/rm" ersetzen!! RM="/bin/ls" TEST="/usr/bin/test"
TEST ist unnötig, das ist ein Shell-Builtin; /usr/bin/test gibts AFAIK nur aus Kompatibilitätsgründen.
# Der Code cd $INBOUND while $TEST $ADDRESSE != EOF; do read $LISTE; if test $ADDRESSE = EOF ; then exit; fi for i in $($LS -I $LISTE); do echo "$ADDRESSE bekommt $i"; $UUENCODE $i $i | $MAIL -s $SUBJECT $ADDRESSE ; $RM $i; done done
Zuerst mal: Das Semikolon am Zeilenende ist in der Shell unnötig.
Dein read liest von stdin, wenn er eine andere Datei lesen soll,
dann musst Du die Eingabe mit < umleiten. Den Dateiende-Schalter EOF
kenne ich in der Shell nicht.
Die Syntax für read lautet:
read variable
wobei dann in variable der Inhalt steht.
Der rm ist IMHO an der falschen Stelle, die Datei wird ja schon beim
ersten Mail-Versand gelöscht. Der erste Empfänger kriegt alle
Mails, der zweite schon keine mehr.
Ich würde das so machen: