Bearbeiten von „UUGRN Stammtisch.sh“

Aus UUGRN

Warnung: Du bist nicht angemeldet. Deine IP-Adresse wird bei Bearbeitungen öffentlich sichtbar. Melde dich an oder erstelle ein Benutzerkonto, damit Bearbeitungen deinem Benutzernamen zugeordnet werden.

Die Bearbeitung kann rückgängig gemacht werden. Bitte prüfe den Vergleich unten, um sicherzustellen, dass du dies tun möchtest, und speichere dann unten deine Änderungen, um die Bearbeitung rückgängig zu machen.

Aktuelle Version Dein Text
Zeile 1: Zeile 1:
Dieses Script ermittelt die [[UUGRN:Stammtisch|Stammtischtermine]] und [[UUGRN:FIXME Treffen]] und gibt passenden SQL-Code für die Kalender-Tabelle aus.  
+
Dieses Script ermittelt die [[UUGRN:Stammtisch|Stammtischtermine]] in Mannheim gibt passenden SQL-Code für die Kalender-Tabelle aus.  
  
== Script ==
+
== Funktionsweise ==
<code><pre>
+
; gegeben:
#! /bin/sh
+
Der Stammtisch findet immer am 2. Mittwoch im Monat um 20 Uhr in der Tomate in Mannheim (ORT_ID=7) statt.
 +
; Bedingungen:
 +
Der 2. Wochentag eines Monats ist immer zwischen dem 8. und dem 14., der Mittwoch ist Wochentag Nummer 3.
  
YEAR=${1:-$(date +%Y)}
+
; Code:
test "${YEAR}" -gt 2000 -a "${YEAR}" -lt 2038 || YEAR="$(date +%Y)"
+
Die beiden for-Schleifen durchlaufen für alle Monate alle Tage von 8 bis 14. Dabei wird für ein gegebenes Jahr ein Datum im ISO-Format erzeugt und an GNU-date übergeben.
 +
GNU-date erzeugt das Ausgabeformat
 +
Wochentag|ISO-Datum|UNIX-Timestamp
  
for MONTH in $(gseq -w 01 12); do for DAY in $(gseq -w 01 31);  do
+
Mit grep werden alle Zeilen ausgefischt, die mit 3 beginnen, das ist jeweils der Mittwoch. Alle anderen Zeilen werden verworfen.
    gdate "+%u|%d|%F" --date "${YEAR}-${MONTH}-${DAY}" 2>/dev/null
+
Die folgende while-Schleife erzeugt den SQL-Output für die Kalender-Tabelle.
done; done |
 
while IFS='|' read DOW DOM DATE; do
 
  case ${DOM} in
 
    01|02|03|04|05|06|07) NIM=1 ;;
 
    08|09|10|11|12|13|14) NIM=2 ;;
 
    15|16|17|18|19|20|21) NIM=3 ;;
 
    22|23|24|25|26|27|28) NIM=4 ;;
 
    29|30|31) NIM=5 ;;
 
    *) NIM="0" ;;
 
  esac
 
  
  SQL="insert into KALENDER set ID=0"
+
Dabei wird das ISO-Datum hier nicht verwendet, es dient lediglich der Kontrolle. Sollte eine Tabelle gefüllt werden, die statt eines Integer-Wertes (Timestamp) ein echtes Datum erwartet, kann dieses hier verwendet werden.
  SQL2=""
 
  case ${NIM}-${DOW} in
 
    1-5) # 1. Freitag
 
      SQL2=", DATUM='${DATE} 20:00:00', ORT_ID=11, TEXT='FIXME', EVENT_LINK='http://fixme.uugrn.org/'"
 
      ;;
 
    3-1) # 3. Montag
 
      SQL2=", DATUM='${DATE} 20:00:00', ORT_ID=12, TEXT='UnixStammtisch', EVENT_LINK='http://stammtisch.uugrn.org/'"
 
      ;;
 
  esac
 
  
  if [ -n "${SQL2}" ]; then
 
    echo "${SQL}${SQL2};"
 
  fi
 
done
 
</pre></code>
 
  
=== Variablen ===
+
== Bourne-Shell-Code ==
;YEAR,MONTH,DAY: Iteriert über alle Kalendertage des angegebenen Jahres
+
J=2009
;DOW: day-of-week [1..7], 1=Montag  
+
for M in 1 2 3 4 5 6 7 8 9 10 11 12; do
;DOM: day-of-month [1..31]
+
  for T in 8 9 10 11 12 13 14 ; do
;NIM: Nth-in-month [1..5]
+
    gdate "+%w|%Y-%m-%d %H:%M:%S|%s" --date "$J-$M-$T 20:00:00"
 +
  done
 +
done |
 +
grep ^3 |
 +
while IFS='|' read WT DAT TS; do
 +
  echo "insert into KALENDER set ID=0, DATUM=$TS, ORT_ID=7,TEXT='UNIX Stammtisch',EVENT_LINK='http://stammtisch.uugrn.org/';"
 +
done
 +
 
 +
 
 +
== Ausgabe für 2009 ==
 +
insert into KALENDER set ID=0, DATUM=1231959600, ORT_ID=7,TEXT='UNIX Stammtisch',EVENT_LINK='http://stammtisch.uugrn.org/';
 +
insert into KALENDER set ID=0, DATUM=1234378800, ORT_ID=7,TEXT='UNIX Stammtisch',EVENT_LINK='http://stammtisch.uugrn.org/';
 +
insert into KALENDER set ID=0, DATUM=1236798000, ORT_ID=7,TEXT='UNIX Stammtisch',EVENT_LINK='http://stammtisch.uugrn.org/';
 +
insert into KALENDER set ID=0, DATUM=1239213600, ORT_ID=7,TEXT='UNIX Stammtisch',EVENT_LINK='http://stammtisch.uugrn.org/';
 +
insert into KALENDER set ID=0, DATUM=1242237600, ORT_ID=7,TEXT='UNIX Stammtisch',EVENT_LINK='http://stammtisch.uugrn.org/';
 +
insert into KALENDER set ID=0, DATUM=1244656800, ORT_ID=7,TEXT='UNIX Stammtisch',EVENT_LINK='http://stammtisch.uugrn.org/';
 +
insert into KALENDER set ID=0, DATUM=1247076000, ORT_ID=7,TEXT='UNIX Stammtisch',EVENT_LINK='http://stammtisch.uugrn.org/';
 +
  insert into KALENDER set ID=0, DATUM=1250100000, ORT_ID=7,TEXT='UNIX Stammtisch',EVENT_LINK='http://stammtisch.uugrn.org/';
 +
insert into KALENDER set ID=0, DATUM=1252519200, ORT_ID=7,TEXT='UNIX Stammtisch',EVENT_LINK='http://stammtisch.uugrn.org/';
 +
insert into KALENDER set ID=0, DATUM=1255543200, ORT_ID=7,TEXT='UNIX Stammtisch',EVENT_LINK='http://stammtisch.uugrn.org/';
 +
insert into KALENDER set ID=0, DATUM=1257966000, ORT_ID=7,TEXT='UNIX Stammtisch',EVENT_LINK='http://stammtisch.uugrn.org/';
 +
insert into KALENDER set ID=0, DATUM=1260385200, ORT_ID=7,TEXT='UNIX Stammtisch',EVENT_LINK='http://stammtisch.uugrn.org/';
  
  
 
[[Kategorie:Script]]
 
[[Kategorie:Script]]
[[Kategorie:UUGRN|Stammtischkalender]]
+
[[Kategorie:Verein]]

Bitte kopiere keine Inhalte, die nicht Deine eigenen sind!

Du gibst uns hiermit Deine Zusage, dass
  • Du den Text nicht aus Wikipedia kopiert hast
  • Du den Text selbst verfasst hast
  • oder der Text entweder
    • Allgemeingut (public domain) ist
    • oder der Copyright-Inhaber seine Zustimmung gegeben hat.
Wichtig
  • Benutze keine urheberrechtlich geschützten Werke ohne Erlaubnis des Copyright-Inhabers!
  • Falls dieser Text bereits woanders veröffentlicht wurde, weise bitte auf der 'Diskussion:'-Seite darauf hin.
  • Bitte beachte, dass alle UUGRN-Beiträge automatisch unter der der Creative Commons Lizenz stehen.
  • Falls Du nicht möchtest, dass Deine Arbeit hier von anderen verändert und verbreitet wird, dann drücke nicht auf "Artikel Speichern".

Bitte beantworte die folgende Frage, um diese Seite speichern zu können (weitere Informationen):

Abbrechen Bearbeitungshilfe (wird in einem neuen Fenster geöffnet)