Sponsored Content
Top Forums Shell Programming and Scripting Script to run on 2 4 and 7 day of the month Post 302975205 by drl on Thursday 9th of June 2016 11:02:08 AM
Old 06-09-2016
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.

See man pages for details.

Best wishes ... cheers, drl
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Write a shell script to find whether the first day of the month is a working day

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)
Discussion started by: phani
7 Replies

2. Shell Programming and Scripting

Cron to run first day of month to calculate date 3 months ago

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)
Discussion started by: new2ss
1 Replies

3. UNIX for Dummies Questions & Answers

cron script -run every 2nd day of month except Monday

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)
Discussion started by: newtou
2 Replies

4. Shell Programming and Scripting

crontab entry to run every last day of the month

i've created a script which should run every last day of the month. what would be the exact crontab entry for this? thanks! (9 Replies)
Discussion started by: tads98
9 Replies

5. Shell Programming and Scripting

Script to find previous month last day minus one day timestamp

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)
Discussion started by: girish.raos
3 Replies

6. Shell Programming and Scripting

Script to counting a specific word in a logfile on each day of this month, last month etc

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)
Discussion started by: pnara2
5 Replies

7. Shell Programming and Scripting

run the script for last day of the month

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)
Discussion started by: aks_1902
4 Replies

8. Shell Programming and Scripting

Need help in running script on last day of month

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)
Discussion started by: aks_1902
3 Replies

9. UNIX for Dummies Questions & Answers

Running Script via Crontab on 2nd Working day each month

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)
Discussion started by: Hollo
5 Replies

10. Shell Programming and Scripting

Writing a script to run weekly/monthly - check for weekday or day-of-the-month

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)
Discussion started by: newbie_01
1 Replies
Prima::Calendar(3)					User Contributed Perl Documentation					Prima::Calendar(3)

NAME
Prima::Calendar - standard calendar widget SYNOPSIS
use Prima::Calendar; my $cal = Prima::Calendar-> create( useLocale => 1, onChange => sub { print $_[0]-> date_as_string, " "; }, ); $cal-> date_from_time( localtime ); $cal-> month( 5); DESCRIPTION
Provides interactive selection of date between 1900 and 2099 years. The main property, date, is a three-integer array, day, month, and year, in the format of perl localtime ( see "localtime" in perlfunc ) - day can be in range from 1 to 31,month from 0 to 11, year from 0 to 199. API
Events Change Called when the date property is changed. Properties date DAY, MONTH, YEAR Accepts three integers in format of "localtime". DAY can be from 1 to 31, MONTH from 0 to 11, YEAR from 0 to 199. Default value: today's date. day INTEGER Selects the day in month. firstDayOfWeek INTEGER Selects the first day of week, an integer between 0 and 6, where 0 is Sunday is the first day, 1 is Monday etc. Default value: 0 month Selects the month. useLocale BOOLEAN If 1, the locale-specific names of months and days of week are used. These are read by calling "POSIX::strftime". If invocation of POSIX module fails, the property is automatically assigned to 0. If 0, the English names of months and days of week are used. Default value: 1 See also: date_as_string year Selects the year. Methods can_use_locale Returns boolean value, whether the locale information can be retrieved by calling "strftime". month2str MONTH Returns MONTH name according to useLocale value. make_months Returns array of 12 month names according to useLocale value. day_of_week DAY, MONTH, YEAR, [ USE_FIRST_DAY_OF_WEEK = 1 ] Returns integer value, from 0 to 6, of the day of week on DAY, MONTH, YEAR date. If boolean USE_FIRST_DAY_OF_WEEK is set, the value of "firstDayOfWeek" property is taken into the account, so 0 is a Sunday shifted forward by "firstDayOfWeek" days. The switch from Julian to Gregorian calendar is ignored. date_as_string [ DAY, MONTH, YEAR ] Returns string representation of date on DAY, MONTH, YEAR according to useLocale property value. date_from_time SEC, MIN, HOUR, M_DAY, MONTH, YEAR, ... Copies date from "localtime" or "gmtime" result. This helper method allows the following syntax: $calendar-> date_from_time( localtime( time)); AUTHOR
Dmitry Karasik, <dmitry@karasik.eu.org>. SEE ALSO
Prima, Prima::Widget, POSIX, "localtime" in perlfunc, "time" in perlfunc, examples/calendar.pl. perl v5.14.2 2009-02-24 Prima::Calendar(3)
All times are GMT -4. The time now is 08:14 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy