Datum: 2002-08-01
Quelle: suse-linux
Etwas weiter als der Artikel Vormonat ermitteln geht folgendes Beispiel. Es ermittelt jeweils den gleichen Tag in den Vormonaten. Hier muss man wieder das Monatsende beachten: Nicht jeder Monat hat 31 Tage. In diesem Fall wird der letzte Tag des entsprechenden Monats angezeigt.
for mon in `seq 1 12`; do
ymd=`date +%Y%m\`date +%d\` -d "\`date +\"%Y-%m-15\"\` -$mon month"`
test `date +%Y%m%d -d $ymd` = $ymd || \
ymd=`date +%Y%m%d -d "\`date +\"%Y-%m-01\"\` -\`expr $mon - \
1\` month -1 day"`
echo $ymd
done
Die Schleife berechnet nacheinander die gleichen Tage der letzten 12 Vormonate. Es wird ausgenutzt, dass das Subtrahieren eines Monats vom aktuellen Datum in Monaten mit 31 Tagen den gleichen Monat liefert. In diesem Fall wird der Vortag des 1. ermittelt. Auch hier muss man unter Umständen (Lokalisierung) wieder das Anzeigeformat der date-Aufrufe anpassen.