Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
-
Voyager_MP
- Beiträge: 628
- Registriert: 22.06.2004 10:04:07
- Wohnort: Aachen
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
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.
-
Voyager_MP
- Beiträge: 628
- Registriert: 22.06.2004 10:04:07
- Wohnort: Aachen
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
-
GoKi
- Beiträge: 2068
- Registriert: 04.07.2003 23:08:56
- Lizenz eigener Beiträge: MIT Lizenz
Beitrag
von GoKi » 26.03.2010 11:55:04
MfG GoKi
:wq
-
Voyager_MP
- Beiträge: 628
- Registriert: 22.06.2004 10:04:07
- Wohnort: Aachen
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