Date


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Date
# 1  
Old 12-07-2011
Lightbulb Date

There is a shell script which runs on every friday and it generates a file in
yyyymmdd format for eg : 20111202.
When we manually run the script it generates files but it will take the system date .

My requirement is whatever the day it runs it should rename the file to the date of friday .

For eg : today is 20111207 - wednesday . if i am running the script today it will generate a file of date 20111207.But i want the date to be renamed to 20111202 ( friday ).

I am running the script in Hp unix .. Please suggest..
# 2  
Old 12-07-2011
Check this function:
Code:
$ cat nextFriday.sh
getNextFridayDate()
{
	currentDayName=`date +"%A"`
	currentDate=`date +"%Y%m%d"`
	countDays=1
	while [ "${currentDayName}" != "Friday" ]
	do
		currentDayName=`date -d "${countDays} day" +"%A"`
		currentDate=`date -d "${countDays} day" +"%Y%m%d"`
		countDays=`expr ${countDays} + 1`
	done
	echo "${currentDate}"
}

nextFriDate=`getNextFridayDate`
echo "Next Friday is: [${nextFriDate}]"

$ ./nextFriday.sh
Next Friday is: [20111209]

I hope it helps. =o)
This User Gave Thanks to felipe.vinturin For This Post:
# 3  
Old 12-07-2011
Try a cron every Friday at 00:01 to create a file containing the date in the format you want. Then read that file into your script. To set the process in motion create the first file manually.


Btw. felipe.vinturin method will not work on HP-UX because it needs GNU date. It also calculates next Friday, not most recent Friday.
This User Gave Thanks to methyl For This Post:
# 4  
Old 12-07-2011
Thanks felipe , Thanks methyl .. Actually i need to add a part on existing script with the logic

felipe : Thanks for your suggetion Actually i need to get in previous fridays..Lets say if my script fails on scheduled time which is friday ,. i will be manually running it on monday after fixing the issue .. So it should generate the file of friday's date on which the script got failed ( previous friday)..

methyl : - Thanks for ur suggestion ..But Cant schedule any extra jobs ..

Please suggest if there are any suggestions ..

I have thought of a idea.. but not givng prefrence as it seems to be bit length .
taking 7 variables ..
day1=Mon , day2 =Tue...day 5 - fri,day7 =Sun

and when the file will generate . let say its 20111209..will extract the day from it .. then will put a condition which will check

if result day == fri . ten echo "" elif result day = mon then result day - 3 will give friday . ..
something like tht ..

Its just a logic i thought of not implemented yet ..

Please suggest .

Thanks
# 5  
Old 12-07-2011
Surely when the script runs on Friday it could start off by creating a timestamp file ready for the rerun? There is a hole in this idea if the job does not run at all on the Friday.

The Shell arithmetic approach tends to be verbose but not that difficult to write. It needs to work even if the rerun takes place on awkward dates like Mar 3rd in a leap year or any Jan 3rd.

Last edited by methyl; 12-07-2011 at 10:27 AM..
# 6  
Old 12-07-2011
Check the code below:

Code:
tempFile="./fridayDate.tmp"
##########################################################
checkRetCode ()
{
	lastRetCode=$?
	if [ ${lastRetCode} -ne 0 ]
	then
		echo "Last command's return code is invalid: [${lastRetCode}]. Exitting 1."
		exit 1
	fi
}
##########################################################
setFridayInfo ()
{
	currentDayName=`date +"%A"`
	if [ "${currentDayName}" == "Friday" ]
	then
		lastFridayDate=`date +"%Y%m%d"`
		echo "Today is Friday! Writing to temp file: [${tempFile}][${tempFile}]"
		echo "${lastFridayDate}" > "${tempFile}"
		checkRetCode
	fi

	if [ -f "${tempFile}" ]
	then
		lastFridayDate=`egrep '[0-9]+' "${tempFile}"`
		lastFridayDate="${lastFridayDate:-NULL}"
		if [ ${#lastFridayDate} -ne 8 ]
		then
			echo "Temp file has an invalid date: [${#lastFridayDate}][${lastFridayDate}]. Exitting 1."
			exit 1
		fi
	else
		echo "Temp file does not exist: [${tempFile}] and weekday name is different from Friday. Exitting 1."
		exit 1
	fi
	return 0
}

##########################################################
setFridayInfo

echo "${lastFridayDate}"

When your job runs on Friday, it will write to the temp file Friday's date (YYYYMMDD), on the other days, it will look for the date in the temp file.

I hope it helps.
This User Gave Thanks to felipe.vinturin For This Post:
# 7  
Old 12-12-2011
Date - Script

Thanks Felipe . Just have some queires..as you mentioned that ur script will create a temp file on friday ..So my script will be reading frm tht temp file..rite ??

Last edited by sayan09; 12-26-2011 at 07:37 AM.. Reason: please use code tags
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Answers to Frequently Asked Questions

Compare date in .txt with system date and remove if it's lesser than system date

I m working on shell scripting and I m stuck where in my .txt file there is column as expiry date and I need to compare that date with system date and need to remove all the rows where expiry date is less than system date and create a new .txt with update. (1 Reply)
Discussion started by: Stuti
1 Replies

2. UNIX for Beginners Questions & Answers

Compare date in .txt with system date and remove if it's lesser than system date

Can someone help me with the code wherein there is a file f1.txt with different column and 34 column have expiry date and I need to get that and compare with system date and if expiry date is <system date remove those rows and other rows should be moved to new file f2.txt . I don't want to delete... (2 Replies)
Discussion started by: Stuti
2 Replies

3. Shell Programming and Scripting

Date: invalid date trying to set Linux date in specific format

i try to set linux date & time in specific format but it keep giving me error Example : date "+%d-%m-%C%y %H:%M:%S" -d "19-01-2017 00:05:01" or date +"%d-%m-%C%y %H:%M:%S" -d "19-01-2017 00:05:01" keep giving me this error : date: invalid date ‘19-01-2017 00:05:01' Please use CODE tags... (7 Replies)
Discussion started by: umen
7 Replies

4. Shell Programming and Scripting

Script to determine Date,TotalFile,total size of file based on date

I have file listed like below -rw-r--r--+ 1 test test 17M Nov 26 14:43 test1.gz -rw-r--r--+ 1 test test 0 Nov 26 14:44 test2.gz -rw-r--r--+ 1 test test 0 Nov 27 10:41 test3.gz -rw-r--r--+ 1 test test 244K Nov 27 10:41 test4.gz -rw-r--r--+ 1 test test 17M Nov 27 10:41 test5.gz I... (5 Replies)
Discussion started by: krish2014
5 Replies

5. Shell Programming and Scripting

Converting a date to friday date and finding Min/Max date

Dear all, I have 2 questions. I have a file with many rows which has date of the format YYYYMMDD. 1. I need to change the date to that weeks friday date(Ex: 20120716(monday) to 20120720). Satuday/Sunday has to be changed to next week friday date too. 2. After converting the date to... (10 Replies)
Discussion started by: 2001.arun
10 Replies

6. Shell Programming and Scripting

Check if a date field has date or timestamp or date&timestamp

Hi, In a field, I should receive the date with time stamp in a particular field. But sometimes the vendor sends just the date or the timestamp or correctl the date&timestamp. I have to figure out the the data is a date or time stamp or date&timestamp. If it is date then append "<space>00:00:00"... (1 Reply)
Discussion started by: machomaddy
1 Replies

7. Shell Programming and Scripting

finding date numeral from file and check the validity of date format

hi there I have file names in different format as below triss_20111117_fxcb.csv triss_fxcb_20111117.csv xpnl_hypo_reu_miplvdone_11172011.csv xpnl_hypo_reu_miplvdone_11-17-2011.csv xpnl_hypo_reu_miplvdone_20111117.csv xpnl_hypo_reu_miplvdone_20111117xfb.csv... (10 Replies)
Discussion started by: manas_ranjan
10 Replies

8. UNIX for Dummies Questions & Answers

Delete a row from a file if one column containing a date is greater than the current system date

Hello gurus, I am hoping someone can help me with the required code/script to make this work. I have the following file with records starting at line 4: NETW~US60~000000000013220694~002~~IT~USD~2.24~20110201~99991231~01~01~20101104~... (4 Replies)
Discussion started by: chumsky
4 Replies

9. Shell Programming and Scripting

Date One Week Ago From Given Date, Not From Current Date

Hi all, I've used various scripts in the past to work out the date last week from the current date, however I now have a need to work out the date 1 week from a given date. So for example, if I have a date of the 23rd July 2010, I would like a script that can work out that one week back was... (4 Replies)
Discussion started by: Donkey25
4 Replies

10. UNIX for Dummies Questions & Answers

Move A File With Same Date,don't Change The Desitination Dir Date

Assume, I created one file three years back and I like to move the file to some other directory with the old date (Creation date)? Is it possible? Explain? (1 Reply)
Discussion started by: jee.ku2
1 Replies
Login or Register to Ask a Question