Ferienliste basteln

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
Voyager_MP
Beiträge: 628
Registriert: 22.06.2004 10:04:07
Wohnort: Aachen

Ferienliste basteln

Beitrag von Voyager_MP » 26.03.2010 11:02:33

Hi, ich muss einen paar cronjobs so bauen, das sie in den schulferien nicht ausgefuehrt werden.

klar, wrapper um das wecker script und testen ob heute ein ferientag ist...
nur, wie bekomme ich aus so einer liste, eine liste mit abseluten daten ?

Code: Alles auswählen

curl -silent http://www.schulferien.org/iCal/Ferien/icals/Ferien_Nordrhein_Westfalen_2010.ics | egrep "DTSTART|DTEND" | cut -d: -f2
20100327
20100411
20100525
20100526
20100715
20100828
20101011
20101024
20100101
20100107
20101224
ich suche irgendwas wie
seq 20100327 20100411
Gruß Michel

cosmac
Beiträge: 4576
Registriert: 28.03.2005 22:24:30

Re: Ferienliste basteln

Beitrag von cosmac » 26.03.2010 11:23:43

hi,

du könntest mit dem "Tag des Jahres" arbeiten. Dabei sind die Tage eines Jahres von 1 bis 365/366 durchnummeriert. "date +%j" liefert die aktuelle Tagesnummer, "date --date=20101231 +%j" z.B. die vom 31.12. Damit funktioniert dann seq und welche Schreibweise man für den Vergleich nimmt, ist ja eigentlich egal.

Code: Alles auswählen

seq $(date --date=20100327 +%j) $(date --date=20100411 +%j)
Edit: für die Weihnachtsferien müsste man noch das Jahr berücksichtigen :(
Beware of programmers who carry screwdrivers.

Benutzeravatar
Voyager_MP
Beiträge: 628
Registriert: 22.06.2004 10:04:07
Wohnort: Aachen

Re: Ferienliste basteln

Beitrag von Voyager_MP » 26.03.2010 11:40:05

kann ich denn wieder von tagen des jahres auf das datum zurueck ?
Da ich ja erschwerend auch noch die Feiertage beruecksichtigen muss :)
Gruß Michel

Benutzeravatar
GoKi
Beiträge: 2068
Registriert: 04.07.2003 23:08:56
Lizenz eigener Beiträge: MIT Lizenz

Re: Ferienliste basteln

Beitrag von GoKi » 26.03.2010 11:55:04

date kann auch rechnen.

Code: Alles auswählen

date --date="20100101+123days"
MfG GoKi
:wq

Benutzeravatar
Voyager_MP
Beiträge: 628
Registriert: 22.06.2004 10:04:07
Wohnort: Aachen

Re: Ferienliste basteln

Beitrag von Voyager_MP » 26.03.2010 11:58:24

Hier ist das fertige script, thx to all

Code: Alles auswählen

#!/bin/bash
CAL_FERIEN="http://www.schulferien.org/iCal/Ferien/icals/Ferien_Nordrhein_Westfalen_2010.ics"
CAL_FEIERTAGE="http://www.schulferien.org/iCal/Feiertage/icals/Feiertage_Nordrhein_Westfalen_2010.ics"

function ferien () {
curl -silent $CAL_FERIEN | egrep "SUMMARY|DTSTART|DTEND" | cut -d: -f2 | cut -d" " -f1 >/tmp/$$
DLIMITER=$(grep ferien /tmp/$$ | uniq )
for d in $DLIMITER
    do
        START=$(grep -1 $d /tmp/$$ | tail -1)
        STOP=$(grep -2 $d /tmp/$$ | tail -1)
        seq -w $(date --date=$START +%j) $(date --date=$STOP +%j)
    done
}

function feiertage () {
for d in $(curl -silent $CAL_FEIERTAGE | egrep "DTSTART" | cut -d: -f2)
    do
        date --date=$d +%j
    done
}

for function in ferien feiertage
    do
        $function
    done | sort -u > $HOME/.holydays
Gruß Michel

Antworten