#! /bin/sh year=$(date +%Y) year=2010 # # Find the nth wday in a given month # # Parameters: month year n wday # n=10 means last # mon_day() { case $4 in sun) wday="1-2";; mon) wday="4-5";; fri) wday="16-17";; esac nth=$3 n=1 for mon in $(cal $1 $2 | tail -n +3 | cut -c$wday) do if [ $n -eq $nth ] then echo $mon return else n=$[n+1] fi done if [ $nth -eq 10 ] then echo $mon fi } # LUG-WHV: In einer geraden Kalenderwoche Dienstag um 19:30 Uhr # delta=+16; for i in `seq 1 27`; do # date=`date -d now+${delta}days +%Y-%m-%d`; delta=$[delta + 14]; # printf "%s|19:30|WHV|Linux User Group Wilhelmshaven|W\'haven|http://www.lug-whv.de/\n" $date # done dates_lugwhv() { day=$[ $(date +%j) - 1] day=0 for i in $(seq 1 20) do if [ "$(date -d now-${day}days+${i}days +%V-%u)" = "02-2" ] then delta=$i fi done delta=$[delta + 9] for i in $(seq 1 28) do date=`date -d now-${day}days+${delta}days +%Y-%m-%d` delta=$[delta + 14]; printf "%s|19:30|WHV|Linux User Group Wilhelmshaven|W\'haven|http://www.lug-whv.de/\n" $date done } # # BUG OL: jeder 3. Montag eines Monats # dates_bugol() { for m in $(seq 1 12) do printf '%04d-%02d-%02d|19:00|OL|BSD User Group|Havana|http://www.bugol.de/\n' \ $year $m $(mon_day $m $year 3 mon) done } # # LUG-HB: Treffen: Jeden 3. Sonntag im Monat # dates_lughb_old() { for m in $(seq 1 12) do printf '%04d-%02d-%02d|19:00|HB|Linux User Group Bremen|Bremen|http://www.lug-bremen.info/\n' \ $year $m $(mon_day $m $year 3 sun) done } # # Jeder Sonntag # dates_lughb() { day=$[ $(date +%j) - 1] day=0 delta=28 for i in $(seq 1 53) do date=`date -d now-${day}days+${delta}days +%Y-%m-%d` delta=$[delta + 7]; printf '%s|19:00|HB|Linux User Group Bremen|Bremen|http://www.lug-bremen.info/\n' $date done } # # CCO: jeder 1. und 3. Freitag im Vereinsheim # dates_cco() { for m in $(seq 1 12) do printf '%04d-%02d-%02d|19:30|FRI|Linux Gruppe Ostfriesland|Hesel|http://linux.cco-ev.de/\n' \ $year $m $(mon_day $m $year 1 fri) printf '%04d-%02d-%02d|19:30|FRI|Linux Gruppe Ostfriesland|Hesel|http://linux.cco-ev.de/\n' \ $year $m $(mon_day $m $year 3 fri) done } # # LUGO: letzer Montag und 2. Freitag # dates_lugo() { for m in $(seq 1 12) do printf '%04d-%02d-%02d|19:00|OL|Oldenburger Linux-Stammtisch|Bei Beppo|http://oldenburg.linux.de/\n' \ $year $m $(mon_day $m $year 2 fri) printf '%04d-%02d-%02d|20:00|OL|Oldenburger Linux-Stammtisch|Bei Beppo|http://oldenburg.linux.de/\n' \ $year $m $(mon_day $m $year 10 mon) done } if [ $# -lt 1 ] then type=lugo else type=$1 fi case $type in bugol) dates_bugol;; lugo) dates_lugo;; lughb) dates_lughb;; lugwhv) dates_lugwhv;; cco) dates_cco;; help) echo "bugol, lughb, cco";; esac