… und zum Zweiten

In Zeile 24 wird die Mail-Adresse des Benutzers gewonnen - sie steht in der ersten Zeile der Terminliste und bedarf keiner weiteren Behandlung. Anders die Terminzeilen, diese müssen wir erst noch in ihre Elemente zerlegen. Nach Zerlegung muss anhand von Datum und Vorwarnzeit geprüft werden, ob das aktuelle Datum zwischen Beginn der Vorwarnzeit und dem Termin liegt und gegebenenfalls die Mail verschickt werden. Das alles passiert in den Zeilen 26 bis 39.

Die while-Schleife in Zeile 30 arbeitet der Reihe nach alle Terminzeilen ab. In Zeile 32 erfolgt die Zerlegung der Terminzeile mittels set-Anweisung: die übergebenen Parameter werden in den Parameter-Variablen ($1, $2 usw.) gespeichert. Da unsere Elemente in jeder Terminzeile durch Tabulatoren getrennt sind, wird IFS in Zeile 26 auf Tabulator ('\t') gesetzt.

Vergangenheitsbewältigung

Für den Vergleich, ob das aktuelle Datum zwischen dem Termin und dem Beginn der Vorwarnzeit liegt, müssen wir zunächst das Datum der ersten Vorwarnung berechnen. Für Weihnachten und eine Vorwarnzeit von einer Woche ist das nicht weiter schwierig: Vom Tag des Termins, hier 24, brauchen wir lediglich den Vorwarnzeitraum, also 7 Tage, abzuziehen - heraus kommt, dass wir ab dem 17. des Monats warnen müssen. Wenn wir aber einen Termin am ersten März haben, der zwei Tage vorgewarnt werden soll, wird es komplex: Neben dem Monats-Umsprung müssen wir berechnen, ob wir ein Schaltjahr haben oder nicht.

Viel einfacher ist es, das Programm date für diesen Zweck zu verwenden. date kann Datumsformate in fast beliebiger Eingabeform erkennen und damit rechnen. Für unsere Zwecke ist die umgangssprachliche Formulierung der Datumsangabe interessant: Mit der Formulierung "20021224 7 days ago" berechnet date das Datum, das sieben Tage vor dem 24. Dezember 2002 liegt - unter Berücksichtigung aller Seiteneffekte wie Monatsgrenzen und Schaltjahre. Die Ausgabe erfolgt wieder im gepackten Datumsformat mit Jahr, Monat und Tag ohne Trennzeichen.

Der Verzicht auf Trennzeichen im gepackten Datumsformat ist begründet: So wird aus jedem Datum eine achtstellige Zahl, die sich mit herkömmlichen mathematischen Operatoren vergleichen lässt. Dass es sich hier tatsächlich um ein Datum handelt, brauchen wir beim Vergleich nicht zu berücksichtigen. In Zeile 35 erfolgt schließlich der Aufruf der Funktion TerminWarnung.

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

  • Portabel programmieren mit Dialog, Gdialog und Kdialog
    Bash-Skripte sind meist nur für die Verwendung auf der Kommandozeile gedacht und schrecken Nicht-Experten mit unübersichtlichen Ausgaben ab. Das muss aber nicht so sein: Die Programme Dialog, Gdialog und Kdialog verstecken die Kommandozeile vollständig vor dem Benutzer.
  • Gut aufgestellt
    Admidio verwaltet nicht nur plattformunabhängig Mitgliederdaten, sondern managt auch Veranstaltungstermine samt Zeiten und Teilnehmern elegant und online.
  • Termine und Aufgaben immer synchron halten
    Ein kleines Applet bringt Ordnung in Termine und Aufgaben und synchronisiert zugleich PC und Smartphone, sodass Sie immer auf dem neusten Stand sind.
Kommentare

Infos zur Publikation

LU 12/2017: Perfekte Videos

Digitale Ausgabe: Preis € 5,95
(inkl. 19% MwSt.)

LinuxUser erscheint monatlich und kostet 5,95 Euro (mit DVD 8,50 Euro). Weitere Infos zum Heft finden Sie auf der Homepage.

Das Jahresabo kostet ab 86,70 Euro. Details dazu finden Sie im Computec-Shop. Im Probeabo erhalten Sie zudem drei Ausgaben zum reduzierten Preis.

Bei Google Play finden Sie digitale Ausgaben für Tablet & Smartphone.

HINWEIS ZU PAYPAL: Die Zahlung ist ohne eigenes Paypal-Konto ganz einfach per Kreditkarte oder Lastschrift möglich!

Stellenmarkt

Aktuelle Fragen

EasyBCD/NeoGrub
Wolfgang Conrad, 17.12.2017 11:40, 0 Antworten
Hallo zusammen, benutze unter Windows 7 den EasyBCD bzw. NEOgrub, um LinuxMint aus einer ISO Dat...
Huawei
Pit Hampelmann, 13.12.2017 11:35, 2 Antworten
Welches Smartphone ist für euch momentan das beste? Sehe ja die Huawei gerade ganz weit vorne. Bi...
Fernstudium Informatik
Joe Cole, 12.12.2017 10:36, 2 Antworten
Hallo! habe früher als ich 13 Jahre angefangen mit HTML und später Java zu programmieren. Weit...
Installation Linux mint auf stick
Reiner Schulz, 10.12.2017 17:34, 3 Antworten
Hallo, ich hab ein ISO-image mit Linux Mint auf einem Stick untergebracht Jetzt kann ich auch...
Canon Maxify 2750 oder ähnlicher Drucker
Hannes Richert, 05.12.2017 20:14, 4 Antworten
Hallo, leider hat Canon mich weiterverwiesen, weil sie Linux nicht supporten.. deshalb hier die...