Ahoj,
pracoval jsem na nejakem zalohovacim skriptu, s tim, ze jsem potreboval udelat
rotaci jednou mesicne, a to v patek (cronuje se denne vecer). Dalo se to
udelat pres nejaky pomocny soubor, ale porad jsem si rikal, ze to musi jit i
stavove - proste podle dnu v tydnu a dnu v mesici. A vida, po asi
dvouhodinovem premysleni jsem to fakt dal. :)
Takze - leze mi z toho identifikator stylem 2012-01, a to tak, ze "mesic"
konci az ten prvni patek dalsiho mesice. Tj. ted napriklad "2012-01" skonci
az 2.2. a od 3.2. bude "2012-02".
Pokud by nekdo chtel resit podobnou zalezitost, zde se podelim o skript:
#!/bin/bash
# nedele je 0, sobota je 6
DAY_OF_WEEK=`date '+%w'`
DAY_OF_MONTH=`date '+%d'`
MONTH=`date '+%m'`
YEAR=`date '+%Y'`
# "Vzdalenost" od posledniho patku
if [ $DAY_OF_WEEK -lt 5 ]
then LAST_FRIDAY_AGO=$[$DAY_OF_WEEK + 2]
else LAST_FRIDAY_AGO=$[$DAY_OF_WEEK - 5]
fi
# Chceme, aby novy mesic (a plna zaloha) zacal vzdy
# prvni patek v mesici. Takze zde pocitame, zda jde
# jeste o stary mesic - tzn. je zacatek noveho mesice,
# ale jeste nebyl patek
if [ $[$LAST_FRIDAY_AGO - $DAY_OF_MONTH] -ge 0 ]
then
# Stale mame "stary mesic"
if [ $MONTH = 01 ]
then MONTH=12; YEAR=$[$YEAR-1]
else MONTH=$[$MONTH-1]
if [ $MONTH -lt 10 ]; then MONTH=0$MONTH; fi
fi
fi
echo "$YEAR-$MONTH"
jimo:)
[ A project manager is a person who thinks
nine women can deliver a baby in one month. ]
|