Scripting issue


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Scripting issue
# 1  
Old 05-09-2016
Wrench Scripting issue

I am having a problem. which I have described below>>

I have to run a script with the format : <File_name><Start_date><End_date>

Code:
abcd.sh 19-JAN-2015 01-May-2014

problem is I need to compare these two dates and throw an error as start date must be less than or equal to end date.

But given that I am passing the dates as arguments I cant compare them. Someone please help me on this. It would be really helpful.
Moderator's Comments:
Mod Comment Please use CODE tag when displaying sample input, sample output, and code segments as required by forum rules.

Last edited by Don Cragun; 05-09-2016 at 04:13 AM.. Reason: Add CODE tags.
# 2  
Old 05-09-2016
Quote:
Originally Posted by Chandan_Bose
I am having a problem. which I have described below>>

I have to run a script with the format : <File_name><Start_date><End_date>

Code:
abcd.sh 19-JAN-2015 01-May-2014

problem is I need to compare these two dates and throw an error as start date must be less than or equal to end date.

But given that I am passing the dates as arguments I cant compare them. Someone please help me on this. It would be really helpful.
Moderator's Comments:
Mod Comment Please use CODE tag when displaying sample input, sample output, and code segments as required by forum rules.
The tools available for processing dates and times vary considerably between operating systems and shells.

What operating system are you using?

What shell are you using?
This User Gave Thanks to Don Cragun For This Post:
# 3  
Old 05-09-2016
I am using bash shell
OS - Linux MXDNS 2.6.32-431.el6.x86_64 #1 SMP Sun Nov 10 22:19:54 EST 2013 x86_64 x86_64 x86_64 GNU/Linux
# 4  
Old 05-09-2016
Hello Chandan_Bose,

Could you please try following as a first point and let me know if this helps you.
Code:
cat script.ksh
START_DATE=$1
END_DATE=$2;
if [[ -n $1 && -n $2 ]]
then
        awk -vstart_date="$START_DATE" -vend_date="$END_DATE" 'BEGIN{;num=split("JAN FEB MAR APR MAY JUN JULY AUG SEPT OCT NOV DEC", array," ");for(i=1;i<=num;i++){Q[array[i]]=i};split(start_date, A,"-");split(end_date, B,"-");if(A[3] <= B[3] && Q[toupper(A[2])] <= Q[toupper(B[2])]){if((A[3] == B[3] && Q[toupper(A[2])] == Q[toupper(B[2])] && A[1] <= B[1]) || (A[3] == B[3] && Q[toupper(A[2])] < Q[toupper(B[2])]) || (A[3] < B[3] && Q[toupper(A[2])] < Q[toupper(B[2])])){print "start_date " start_date " seems to be less than " end_date " end_date."} else {print "Date is NOT in proper format."}} else {print "Date is NOT in proper format."}}'
else
        echo "One of the argument is seems to be missing while running the script."
fi

Examples of some runs as follows.
Code:
./script.ksh 19-MAY-2015 01-May-2015
Date is NOT in proper format.
AND
/script.ksh 19-MAY-2015 31-May-2015
start_date 19-MAY-2015 seems to be less than 31-May-2015 end_date.

It will compare the dates but it is not that intelligent enough if user has given wrong output like 32 days in May month etc(trusting user here Smilie). It will compare the dates and run the script.
EDIT: Adding a non-one liner form of solution here too.
Code:
START_DATE=$1
END_DATE=$2;
if [[ -n $1 && -n $2 ]]
then
        awk -vstart_date="$START_DATE" -vend_date="$END_DATE" 'BEGIN{
                                                                        num=split("JAN FEB MAR APR MAY JUN JULY AUG SEPT OCT NOV DEC", array," ");
                                                                        for(i=1;i<=num;i++){
                                                                                                Q[array[i]]=i
                                                                                           };
                                                                        split(start_date, A,"-");
                                                                        split(end_date, B,"-");
        if(A[3] <= B[3] && Q[toupper(A[2])] <= Q[toupper(B[2])]){
        if((A[3] == B[3] && Q[toupper(A[2])] == Q[toupper(B[2])] && A[1] <= B[1]) || (A[3] == B[3] && Q[toupper(A[2])] < Q[toupper(B[2])]) || (A[3] < B[3] && Q[toupper(A[2])] < Q[toupper(B[2])])){
                                print "start_date " start_date " seems to be less than " end_date " end_date."
                           }
        else               {
                                print "Date is NOT in proper format."
                           }
                           }
        else               {
                                print "Date is NOT in proper format."
                           }
                           }                                  '
else
        echo "One of the argument is seems to be missing while running the script."
fi

Thanks,
R. Singh

Last edited by RavinderSingh13; 05-09-2016 at 05:42 AM.. Reason: Adding a non-one liner form of solution now.
This User Gave Thanks to RavinderSingh13 For This Post:
# 5  
Old 05-09-2016
Given you are using a linux system, chances are GNU date is available and bash is recent enough for providing arithmetic operations. Try
Code:
echo $(($(date -d"$2" +%s) - $(date -d"$1" +%s)))
-22726800

This User Gave Thanks to RudiC For This Post:
# 6  
Old 05-09-2016
Thanks a lot RavinderSingh13, but fact is I need a check where it compares the following two arguments and returns a print statement : "start date is greater than end date. Incorrect form". It would be of great help if someone can code that.
# 7  
Old 05-09-2016
Hello Chandan_Bose,

I am not sure you have tried to run my code or not, here are the examples of the script when I run it. Where script.ksh is the complete code as shown in POST#4 by me.
Code:
1st:
./script.ksh 19-MAY-2015 1-May-2015
Date is NOT in proper format.
2nd:
./script.ksh 19-MAY-2015 21-May-2015
start_date 19-MAY-2015 seems to be less than 21-May-2015 end_date.

Kindly do let me know if you have any queries on same.

Thanks,
R. Singh
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Scripting issue

Hi Experts, I'm stuck with a single liner bash script. Need your help to fix it. Let me brief you that what is my expectations from this script. I need the interfaces configured for a list of servers, their respective IP address and FQDN in a output file. The output should be in the same... (3 Replies)
Discussion started by: arun_adm
3 Replies

2. Shell Programming and Scripting

Scripting Issue

Hi All, I am facing a problem when i am trying to run shell script more than 5 times. I have shell script(.sh file) which ran perfectly fine in the early attempts(1,2,3,4 runs). But if i try to run the script more number of times, i am facing the below error message. Too many ('s I do... (3 Replies)
Discussion started by: am24
3 Replies

3. Shell Programming and Scripting

Scripting Issue

needing this script to shut down 1 IceS and start up another, close the 2nd one after 12 seconds and then reboot. here is what i have so far #!/bin/bash ShutDown() { echo "Shutdown in progress." wall <<ENDOFWALL CI Shutdown has been intiated!!!! Shutdown will occur in 30 seconds...... (1 Reply)
Discussion started by: Zaine
1 Replies

4. Shell Programming and Scripting

Scripting Issue

I am having an issue with a script that I created today, my first attempt at this, and was wondering if anyone can give me insight to what changes need to be made. Below is a copy of the script that I have written. WEe are trying to monitor whether or not a services is running. I do have a cron... (1 Reply)
Discussion started by: lsudubee
1 Replies

5. Shell Programming and Scripting

Scripting issue

Hello, I have an ASCII file (many files of the same format, but different dates and numbers) in the format like below: 2008.01.02,08:00,1.46520,1.46520,1.46410,1.46440,70 2008.01.02,08:05,1.46450,1.46560,1.46440,1.46540,79 2008.01.02,08:10,1.46530,1.46540,1.46490,1.46500,46... (8 Replies)
Discussion started by: chief2000
8 Replies

6. Shell Programming and Scripting

scripting issue

Hello, Guys I am having a sql script file which contains some sql statements including inserting values, One column is of the data type date. Now i am having a KSH script for inserting values via this script into the database. The problem I am facing that when I am inserting value in the... (1 Reply)
Discussion started by: mraghunandanan
1 Replies

7. Shell Programming and Scripting

IP-Scripting Issue

Hi Guys, I am quite new to Shell Scripting... I need ur help.. This is very urgent. The thing is like, I need to match a IP address (ex 192.168.200.56) i.e, xxx.xxx.xxx.xx inside a KSH script,but if we enter in different format other than the specified format (ex jjj.ksj., 1.0...), it should... (3 Replies)
Discussion started by: mraghunandanan
3 Replies

8. Shell Programming and Scripting

Scripting issue..

Hi guys... I am newbie to Shell Scripting... I am querying the Oracle database.I want a Shell script for fetching some data from datasets in Oracle database and displaying in an excel sheet.This is my requirement.. Can u plz help me guys.. Regards, Mahesh... (4 Replies)
Discussion started by: mraghunandanan
4 Replies

9. Shell Programming and Scripting

Scripting issue..

Hi guys... I am a newbie to scripting... I have a small requirement... I dont whether u r clear with my requirement... But plz try to help me... Like, tell me some kind of scripts that can help me in retreiving the data from the datasets. Regards, Mahesh... (1 Reply)
Discussion started by: mraghunandanan
1 Replies

10. Shell Programming and Scripting

scripting issue

folks; i'm trying to write a shell script to do the following: 1. i have a file with 39 fields, i'm trying to add 10 more fields with (!) as a field separator. with the following requirement: if field number 20 has a value, then field number 40 will show as (!M!), and if the field number 20 does... (2 Replies)
Discussion started by: moe2266
2 Replies
Login or Register to Ask a Question