PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Date funktion, letzter Tag im Monat?



$emperf!
05.10.08, 17:57
Hi Leute

Ich müsste in einem Backupskript (bash), eine funktion haben um festzustellen ob der gegenwärtige Tag der Letzte des aktuellen Monats ist. Gibt es da eine möglichkeit von Date oder wie macht man sowas am schlausten?

$emperf!

403
05.10.08, 18:44
Hi Leut

Das gibt jeweils den letzen Tag vom Vormonat (Zahl um eins
erhoehen fuer den aktuellen also z.B. -v11m)


, date -v1d -v9m -v-1d
Sun Aug 31 19:37:26 MEST 2008
, date -v1d -v8m -v-1d
Thu Jul 31 19:37:34 MEST 2008


also musst du nur noch den aktuellen Tag dagegen checken.
(2 Variablen)

Alternativ checkst du bei der letzen Zeile von cal das letzte Argument.


Gruss
403

Aber das geht sicher noch einfacher ;)

L00NIX
05.10.08, 19:01
Der Monat von heute ist nicht gleich dem Monat von gestern:


if [ $(( $( date +%m ) - $( date +%m -d yesterday ) )) -ne 0 ] ; then
echo "yap"
fi


...auch das geht sicher einfacher? :D

Gruß
L00NIX

Aqualung
05.10.08, 19:21
Ob


if [ $(date +%d) -eq $(echo `cal` | awk '{print $NF}') ] ; then
echo "letzter"
fi

einfacher ist, darüber kann man streiten ...

$emperf!
05.10.08, 19:48
das artet ja noch zum coding contest aus :)

versuche gerad auf eigene faust den code für den letzten tag des jahres zu basteln. falls jemand diesbezüglich auch etwas auf lager hat dann immer her damit... sonst melde ich mich spätestens falls ich es nicht selber hinkriege :ugly:

$emp!

Aqualung
05.10.08, 19:57
Wie wärs mit



if [ $(date +%j) -ge 365 ]; then
...
fi

403
05.10.08, 19:59
Ein STFW brachte noch folgendes als Funktion der bash (sehr praktisch :)




lastday() ## USAGE: lastday MM [YEAR]
{
case ${1#0} in
9|4|6|11) echo 30 ;; ## 30 days hath September...
1|3|5|7|8|10|12) echo 31 ;;
2) is_leap_year ${2:-`date +%Y`} && echo 29 || echo 28 ;;
*) return 5 ;;
esac
}

is_leap_year() {
[ $(( $1 % 4 )) -eq 0 ] &&
[ $(( $1 % 100 )) -ne 0 ] ||
[ $(( $1 % 400 )) -eq 0 ]
}


Mist jetzt bin ich zu frueh auf den Antworten Button gekommen :-P

Gruss
403

L00NIX
05.10.08, 20:32
das artet ja noch zum coding contest aus :)

versuche gerad auf eigene faust den code für den letzten tag des jahres zu basteln.

Nur eine Variation des Themas, insofern muss bei meinem obigen Skript lediglich das %m durch %Y getauscht werden. ;)