Location: Saint Paul, MN USA / BSD, CentOS, Debian, OS X, Solaris
Posts: 2,288
Thanks Given: 430
Thanked 480 Times in 395 Posts
Hi.
It seems that we need to create a list of the working days in a month, then select days 2,4,7 from that list and check if today is in that list. Here is a demonstration of those steps, using utilities that are found in GNU/Debian as noted:
Code:
#!/usr/bin/env bash
# @(#) s3 Demonstrate display of days in month: "working", not weekend.
D=dateutils.dseq
# Utility functions: print-as-echo, print-line-with-visual-space, debug.
# export PATH="/usr/local/bin:/usr/bin:/bin"
LC_ALL=C ; LANG=C ; export LC_ALL LANG
pe() { for _i;do printf "%s" "$_i";done; printf "\n"; }
pl() { pe;pe "-----" ;pe "$*"; }
db() { ( printf " db, ";for _i;do printf "%s" "$_i";done;printf "\n" ) >&2 ; }
db() { : ; }
C=$HOME/bin/context && [ -f $C ] && $C $D date grep
pl " First day of current month:"
date --date=today +%Y-%m-01
pl " Day 30 days in the future:"
date --date="now + 30 days" +%F
# Get list of working days from first of month.
$D -s "ss" $( date --date=today +%Y-%m-01 ) "$( date --date="now + 30 days" +%F )" -f "%F %a" > f1
pl " Sample of output:"
head -8 f1
pl " Select days 2,4,7:"
sed -n -e '2p' -e '4p' -e '7p' f1 |
tee f2
pl " Test if today is in the 3-day list:"
today=$( date +%F )
pe " today is $today"
if grep "$today" f2 >/dev/null
then
pe " YES, touch the file now."
else
pe " Today is NOT day 2,4,7, skipping touch."
fi
exit 0
producing (luckily today seems like the 7th working day):
Code:
$ ./s3
Environment: LC_ALL = C, LANG = C
(Versions displayed with local utility "version")
OS, ker|rel, machine: Linux, 3.16.0-4-amd64, x86_64
Distribution : Debian 8.4 (jessie)
bash GNU bash 4.3.30
dateutils.dseq dseq 0.3.1
date (GNU coreutils) 8.23
grep (GNU grep) 2.20
-----
First day of current month:
2016-06-01
-----
Day 30 days in the future:
2016-07-09
-----
Sample of output:
2016-06-01 Wed
2016-06-02 Thu
2016-06-03 Fri
2016-06-06 Mon
2016-06-07 Tue
2016-06-08 Wed
2016-06-09 Thu
2016-06-10 Fri
-----
Select days 2,4,7:
2016-06-02 Thu
2016-06-06 Mon
2016-06-09 Thu
-----
Test if today is in the 3-day list:
today is 2016-06-09
YES, touch the file now.
Not trivial, but an interesting problem, however, end cases are not tested, so some work may be needed to turn these ideas into a production script.
Hi all,
I currently have a UNIX file maintenance script that runs daily as a cron job.
Now I want to change the script and create functions/sub inside it that runs on a weekly or monthly basis.
To run all the scripts' daily maintenance, I want to schedule it in cron as simply maint.sh... (1 Reply)
Hello Guys,
I have a questions regarding running a shell script every second working day each month.
I have no clue how solve this problem :wall:.
Important is that it has to be the second working (Mo-Fr).
Example: If 1st and 2nd Days of month are Sat and Sun the script must run on 4th day... (5 Replies)
Hello Experts/Guru,
I need a help in running the script on every month last day....
PS: due to some constrain I can't schedule in crontab
Requirement:
On Jan 31st i want to run some script, similarly on Feb 28th, March 31st, April 30th......till Dec 31st.
Please help me by providing... (3 Replies)
Hello Experts,
I have a script which i want to run the on last day of every month.
let say I have backup.sh script which i want to run it every month last day.
Can anyone please help :confused:
thanks (4 Replies)
Hello All,
I am trying to come up with a shell script to count a specific word in a logfile on each day of this month, last month and the month before. I need to produce this report and email it to customer.
Any ideas would be appreciated! (5 Replies)
Hi All,
I need to find the previous month last day minus one day, using shell script. Can you guys help me to do this.
My Requirment is as below:
Input for me will be 2000909(YYYYMM)
I need the previous months last day minus 1 day timestamp. That is i need 2000908 months last day minus ... (3 Replies)
I know I can't schedule this in cron and would have to write a wrapper around my script and schedule it in cron ....but not sure how do to this?
How do I exclude Monday if the 2nd day of the month falls on a Monday?
Thanks.
I tried this:
0 0 2 * 0,2-6 command
And I know this doesnt... (2 Replies)
Hi,
I would like to find out how can i calculate a date which is 3 months ago. I intend to run a cron job on the 1st of every month, and calculate the month 4 months earlier from the date. For example, if today's date is 1st May 2007, i would like to return 012007( January 2007).
i can get... (1 Reply)
Hi ,
I am relatively new to unix...
Can u pls help me out to find out if the first day of the month is a working day ie from (Monday to Friday)...using Date and If clause in Korn shell..
This is very urgent.
Thanks for ur help... (7 Replies)