UUGRN Stammtisch.sh
Aus UUGRN
Dieses Script ermittelt durch Ausnutzen von Seiteneffekten die Stammtischtermine in Mannheim und Heidelberg und gibt passenden SQL-Code für die Kalender-Tabelle aus.
Funktionsweise
Mittels GNU date wird für alle in Frage kommenden Tage der Wochentag %u ausgegeben, dieser wird von folgenden sed-Ausdruck mit 3 für Mittwoch = Heidelberg und 4 für Donnerstag = Mannheim umgewandelt. Durch die for D-Schleife werden nur die in Frage kommenden Tage durchlaufen, daher kann es keine false positives geben.
Die abschließende while-Schleife übernimmt die Ausgabe von sed und erzeugt das passende, hier unix epoch-Zeitformat und die restlichen Felder.
Script
1 #! /bin/sh 2 # 3 # Berechnet die UUGRN-Stammtische und erzeugt das SQL für die Datenbank 4 # 5 # Jeden 2. Donnerstag im Monat um 19 Uhr in Mannheim (ORT=5) 6 # Jeden 4. Mittwoch im Monat um 20 Uhr in Heidelberg (ORT=6) 7 # 8 # Das Scriptgeht von der Annahme aus, dass der 2. Donnerstag im Monat immer zwischen dem 8. und 14. liegen muss 9 # und dass der 4. Mittwoch im Monat immer zwischen 22. und 28. liegt. 10 # Die Schleifen als auch der egrep | sed Ausdruck gehen direkt darauf ein. 11 # 12 # 13 # Raphael.Becker <rabe@uugrn.org> 14 15 JAHR=2007 16 17 for M in 01 02 03 04 05 06 07 08 09 10 11 12; do 18 for D in 08 09 10 11 12 13 14 22 23 24 25 26 27 28 ; do 19 gdate "+%u %d %Y-%m-%d" --date "$JAHR-$M-$D" 20 done 21 done | 22 egrep "^(4 [01]|3 2)" | 23 sed -e 's,^3 [0-9]* ,20:00:00|6|"kleiner" Stammtisch|,; 24 s,^4 [0-9]* ,19:00:00|5|Stammtisch|,;' | 25 while IFS='|' read ZEIT ORT BEZ DATUM junk; do 26 echo "insert into KALENDER set ID=0, DATUM=$(gdate +%s --date "$DATUM $ZEIT"), ORT_ID=$ORT, TEXT='$BEZ';" 27 done
Ausgabe für 2007
$ bin/uugrn_stammtischkalender.sh insert into KALENDER set ID=0, DATUM=1168538400, ORT_ID=5, TEXT='Stammtisch'; insert into KALENDER set ID=0, DATUM=1169665200, ORT_ID=6, TEXT='"kleiner" Stammtisch'; insert into KALENDER set ID=0, DATUM=1170957600, ORT_ID=5, TEXT='Stammtisch'; insert into KALENDER set ID=0, DATUM=1172689200, ORT_ID=6, TEXT='"kleiner" Stammtisch'; insert into KALENDER set ID=0, DATUM=1173376800, ORT_ID=5, TEXT='Stammtisch'; insert into KALENDER set ID=0, DATUM=1175104800, ORT_ID=6, TEXT='"kleiner" Stammtisch'; insert into KALENDER set ID=0, DATUM=1176397200, ORT_ID=5, TEXT='Stammtisch'; insert into KALENDER set ID=0, DATUM=1177524000, ORT_ID=6, TEXT='"kleiner" Stammtisch'; insert into KALENDER set ID=0, DATUM=1178816400, ORT_ID=5, TEXT='Stammtisch'; insert into KALENDER set ID=0, DATUM=1179943200, ORT_ID=6, TEXT='"kleiner" Stammtisch'; insert into KALENDER set ID=0, DATUM=1181840400, ORT_ID=5, TEXT='Stammtisch'; insert into KALENDER set ID=0, DATUM=1182967200, ORT_ID=6, TEXT='"kleiner" Stammtisch'; insert into KALENDER set ID=0, DATUM=1184259600, ORT_ID=5, TEXT='Stammtisch'; insert into KALENDER set ID=0, DATUM=1185386400, ORT_ID=6, TEXT='"kleiner" Stammtisch'; insert into KALENDER set ID=0, DATUM=1186678800, ORT_ID=5, TEXT='Stammtisch'; insert into KALENDER set ID=0, DATUM=1187805600, ORT_ID=6, TEXT='"kleiner" Stammtisch'; insert into KALENDER set ID=0, DATUM=1189702800, ORT_ID=5, TEXT='Stammtisch'; insert into KALENDER set ID=0, DATUM=1190829600, ORT_ID=6, TEXT='"kleiner" Stammtisch'; insert into KALENDER set ID=0, DATUM=1192122000, ORT_ID=5, TEXT='Stammtisch'; insert into KALENDER set ID=0, DATUM=1193248800, ORT_ID=6, TEXT='"kleiner" Stammtisch'; insert into KALENDER set ID=0, DATUM=1194544800, ORT_ID=5, TEXT='Stammtisch'; insert into KALENDER set ID=0, DATUM=1196276400, ORT_ID=6, TEXT='"kleiner" Stammtisch'; insert into KALENDER set ID=0, DATUM=1197568800, ORT_ID=5, TEXT='Stammtisch'; insert into KALENDER set ID=0, DATUM=1198695600, ORT_ID=6, TEXT='"kleiner" Stammtisch';