Dec. 7th, 2017

miriam_e: from my drawing MoonGirl (Default)
This calculates even weeks, that is, it can calculate fortnights:
expr \( `date +%s` / 604800 \) % 2 >/dev/null || echo "even"

or if you want odd weeks:
expr \( `date +%s` / 604800 + 1 \) % 2 >/dev/null || echo "odd"

There are 604800 seconds in a week.
"% 2" gives the remainder after division by 2.
When expr evaluates to zero the command after the OR (||) is run.

My rubbish collection is on alternate weeks. But cron doesn't know about fortnights and I only put my rubbish out once every two or three months (I don't have much waste). So I use this in cron to trigger an alert on the appropriate day:

0 10 * * mon expr \( `date +\%s` / 604800 + 1 \) \% 2 > /dev/null || alert "garbage day"

I can't remember why I escaped the "%" symbols. I think maybe cron chokes on them if you don't.

Oh, I should add that "alert" is not a standard command. It is a script that I wrote which puts a notice on the screen and uses speech synthesis to announce the message.

Profile

miriam_e: from my drawing MoonGirl (Default)
miriam_e

November 2018

S M T W T F S
    123
45678910
11121314151617
181920212223 24
252627282930 

Style Credit

Expand Cut Tags

No cut tags
Page generated Apr. 18th, 2019 07:27 pm
Powered by Dreamwidth Studios