[CentOS] OT ? Shell script
Robert
kerplop at sbcglobal.net
Sun Dec 4 21:19:24 UTC 2005
Maciej Żenczykowski wrote:
> On Sun, 4 Dec 2005, Robert wrote:
>
>> Does anyone have an elegant solution for finding the date of the 3rd
>> Monday each month and the date of the Sunday preceding? (Sunday
>> shouldn't be beyond my capabilities, once the Monday part is worked
>> out.)
>> For the past several years, I've been handling the chore using a file
>> with a manually input list of dates -- which is about as elegant as
>> driving a tack with a sledge hammer.
>> _______________________________________________
>
> How about something like:
>
> YEAR=2005
> MONTH=12
> for ((DAY=1;DAY<=31;++DAY)); do
> LC_ALL=C TZ=UTC date -d "$YEAR-$MONTH-$DAY"
> done | grep "^Mon " | head -n 3 | tail -n 1
>
> Possibly without the TZ=UTC depending on your needs...
>
> Cheers
> MaZe?
Considering my nebulous request and your apparent lack of expertise in
applied clairvoyance, fine.
The "3rd Monday" part is used in generating reminders to a each of a
group of OldFarts that gets together monthly to inventory aches, pains
and, yes, empty chairs. The "Sunday before" requirement will be used to
run a script (already working) to create a series of image files
containing critical stuff, to be burned (manually) to DVDs to go with me
to the meeting, to be given to a trusted person for safekeeping.
The following is what I have now, stripped down to the bare essentials
for clarity(?):
[rj at mavis ~]$ crontab -l
MAILTO=""
* * * * * /home/rj/meetdate
[rj at mavis ~]$ cat meetdate
#!/bin/bash
# meetdate
/home/rj/NSS.sh 10/17/2005 11/21/2005 12/19/2005 1/16/2006 2/20/2006
3/20/2006 (etc., etc., etc....)
[rj at mavis ~]$
[rj at mavis ~]$ cat NSS.sh
#!/bin/bash
while [ $((`date -d $1 +%s` + 55800)) -le $((`date +%s`)) ] ; do
shift
MM=$((`date -d $1 +%s` + 55800)) # 3:30 PM on the date passed
MB=$((`date -d $1 +%s` - 88200)) # 4:30 AM on the previous day
# I want to match only date, hour and minute.
MBS=`date -d "1/1/1970 + $MB seconds" +%D" "%H":"%M`
done
if [ "`date +%D" "%H":"%M`" = "$MBS" ] ; then
#
# Go execute backup script
#
#
echo Finished Backup Crap
else
echo "Nope! Next backup will be at " $MBS
echo "Meeting will be on " $1" at 3:30 PM"
fi
[rj at mavis ~]$
As it stands now, I have to manually edit the file "meetdate" from time
to time, adding another year or two of dates. It works fine but it just
ain't pretty.
More information about the CentOS
mailing list