#!/bin/date
# *****************************************************************
# Diese Funktion reduziert oder erhoeht das Datum um x Tage.
# Als Parameter benoetigt die Funktion den status (next/preview), welches
# das Datum vor bzw. zurueck stellt, das Datum im Format YYYY-MM-DD und
# optional die Anzahl der Tage um welches das Datum erhoeht bzw.
# reduziert wird. Ein Beispiel: ndate=$( setDate 'next' 2005-04-29 5 )
function setDate() {
local param=$1
local date=$2
local count=${3:-1}
local index=0
while [ "$index" -lt "$count" ]; do
# Datum in Jahr, Monat, Tag splitten...
local days=$( echo $date | cut -d- -f3 )
local mons=$( echo $date | cut -d- -f2 )
local year=$( echo $date | cut -d- -f1 )
# Fuehrende 0 entfernen (zum rechnen)...
days=$( echo $days | sed 's/^0//g' )
# Tag auf 0 setzen, wenn [days] kleiner/gleich 0 ist...
[ "$days" -le 0 ] && days=0
# Tag rauf/runter zaehlen...
[ "$param" = "next" ] && days=$[ $days+1 ] || days=$[ $days-1 ]
# wenn Tag unter 10 ist, wird mit einer 0 aufgefuellt...
[ "$days" -lt 10 ] && days="0${days}"
# errechnete Datum setzen...
date=$( echo -n $( date --date=$year-$mons-$days +%Y-%m-%d ) )
# Zaehler erhoehen...
let index=$index+1
done
# Ausgabe...
echo -n $date
}