Как в шелле получить дату на N дней меньше или больше

Многие команды, например errpt , хотят получить конкретные дату и время, с которого, к примеру, они выдают отчет.

Я предлагаю очень простой способ для вычитания или добавления часов, дней, лет от/к текущей даты – изменить TZ.

Например как заставить errpt выдать отчет за последние сутки:

REALTZ=$TZ
TZ=MSK+21MSD+20,M3.5.0/02:00:00,M10.5.0/03:00:00
YESTERDAY=`date +%m%d%H%M%y`
TZ=$REALTZ

ERR=`errpt -d H -T PERM -s $YESTERDAY|grep -v -f errpt.ignore`

вуаля

 

Или вот задачка: Два пула лент для бэкапа, каждый из которых должен наполняться по четным либо нечетным неделям, но 0 уровень, к примеру, делается в пятницу вечером, а в остальные дни недели идут инкременты к нему. То есть весь набор должен лежать на одном наборе.

REALTZ=$TZ
TZ=MSK+69MSD+68,M3.5.0/02:00:00,M10.5.0/03:00:00
WEEK=`expr `date +%W` % 2 |awk ‘/0/{print “_EVEN”}/1/{print “_ODD”}’`
TZ=$REALTZ

WEEK отдается бэкапному софту для придания формата бэкапсетов…

Оставьте комментарий

6 комментариев “Как в шелле получить дату на N дней меньше или больше”