Convert a date stored in a variable to epoch date


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Convert a date stored in a variable to epoch date
# 1  
Old 02-18-2015
Convert a date stored in a variable to epoch date

I am not able to pass date stored in a variable as an argument to date command. I get current date value for from_date and to_date

Code:
 
#!/usr/bin/ksh
set -x
for s in server ; do
ssh -T $s <<-EOF
from_date="12-Jan-2015 12:02:09"
to_date="24-Jan-2015 13:02:09"
echo \$from_date
echo \$to_date
epoch_from_date="`date +%s -d \$from_date`"
epoch_to_date="`date +%s -d \$to_date`"
echo \$epoch_from_date
echo \$epoch_to_date
EOF
done

# 2  
Old 02-18-2015
There seems to be a misapprehension of here documents. man bash (but similar for ksh):
Quote:
. . . all lines of the here-document are subjected to parameter expansion, command substitution, and arithmetic expansion, the character sequence \<newline> is ignored, and \ must be used to quote the characters \, $, and `.
On the other hand, simple commands are NOT run nor are assignments performed. So, some rearrangements and some simple modification get you nearer to your goal, but you can't achieve it:
Code:
for s in server ; do
from_date="12-Jan-2015 12:02:09"                        # works in same shell
to_date="24-Jan-2015 13:02:09"                          # same
ssh -T $s <<-EOF
$(echo $from_date)                                      # same as just $from_date 
$(echo $to_date)                                        # same
$(epoch_from_date=\"`date +%s -d "$from_date"`\")       # works, but in sub shell
$(epoch_to_date=\"`date +%s -d "$to_date"`\")           # same
$(echo $epoch_from_date)                                # var is gone with sub shell
$(echo $epoch_to_date)                                  # same
EOF
done

Don't forget - the here document is fed to ssh's stdin. It should contain (malleable) commands and/or data for ssh, not the shell.

Last edited by RudiC; 02-18-2015 at 03:17 PM..
This User Gave Thanks to RudiC For This Post:
# 3  
Old 02-18-2015
Try:
Code:
ssh -T $s <<- "EOF"
...
EOF


Quote:
The format of here-documents is:

<<[-]word
here-document
delimiter

If any characters in word are quoted, the delimiter is the result of quote removal on word, and the lines in the here-
document are not expanded. If word is unquoted,
all lines of the here-document are subjected to parameter expansion,
command substitution, and arithmetic expansion. In the latter case, the character sequence \<newline> is ignored, and
\ must be used to quote the characters \, $, and `.
This User Gave Thanks to Scrutinizer For This Post:
# 4  
Old 02-18-2015
Thanks for clarification!

I tried this modified code

Code:
 
#!/usr/bin/ksh
set -x
for s in server ; do
ssh -T $s <<- "EOF"
from_date="12-Jan-2015 12:02:09"
to_date="24-Jan-2015 13:02:09"
echo $from_date
echo $to_date
epoch_from_date="`date +%s -d "$from_date"`"
epoch_to_date=\"`date +%s -d "$to_date"`\"
echo $epoch_from_date
echo $epoch_to_date
EOF
done

But do not get the desired result. Last two echo results to

%s
"%s"

Last edited by raj48; 02-18-2015 at 04:00 PM..
# 5  
Old 02-18-2015
Sorry, my post #2 was due to a misapprehension from my side. The only more or less reasonable hint was "take care of the quoting \"`date +%s -d "$from_date"`\" of the variable...
This User Gave Thanks to RudiC For This Post:
# 6  
Old 02-18-2015
Quote:
Originally Posted by raj48
Thanks for clarification!

I tried this modified code

Code:
 
#!/usr/bin/ksh
set -x
for s in server ; do
ssh -T $s <<- "EOF"
from_date="12-Jan-2015 12:02:09"
to_date="24-Jan-2015 13:02:09"
echo $from_date
echo $to_date
epoch_from_date="`date +%s -d "$from_date"`"
epoch_to_date=\"`date +%s -d "$to_date"`\"
echo $epoch_from_date
echo $epoch_to_date
EOF
done

But do not get the desired result. Last two echo results to

%s
"%s"
I get :
Code:
12-Jan-2015 12:02:09
24-Jan-2015 13:02:09
1421060529
"1422100929"

Ar you sure for s in server is correct. Do you have a server name there, or is it a variable and do you need to put a $ sign in front?
Is the server a Linux system and/or does it have GNU date?
This User Gave Thanks to Scrutinizer For This Post:
# 7  
Old 02-18-2015
And, put the set -x into the here document...
This User Gave Thanks to RudiC For This Post:
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Convert Second Column Date Into EPOCH Time And Print Complete Row

Hello Team, I am stuck in getting the required output in the following case. Please help. My input file is aa|08/01/2016 bb|08/15/2016 I wish to convert the file into aa|epoch time bb|epoch time I am using following code: (3 Replies)
Discussion started by: angshuman
3 Replies

2. Shell Programming and Scripting

Convert a future date into epoch seconds on HPUX system

Hi All, I have scenario where i have to compare two dates. I thought of converting them to epoch seconds and do a numeric comparison. This works fine on Linux systems. $ date -d '2015/12/31' +%s 1451538000 $ date +%s 1449159121 But we don't have -d option in HPUX. What would be... (5 Replies)
Discussion started by: veeresh_15
5 Replies

3. Shell Programming and Scripting

Convert epoch time to Julian date

Need assistance in converting an epoch time to Julian date To get epoch perl -e 'use Time::Local; print timelocal(1,5,2,12,10,2008), "\n"' (3 Replies)
Discussion started by: ajayram_arya
3 Replies

4. Shell Programming and Scripting

How to convert string(variable) into date( epoch) in ksh on HPUX machine?

Hi all, I have used a bash script which ultimately converts a string into date using date --date option: DATE=$DATE" "$TIME" "`date +%Y` //concatenating 2 strings TMRW_DATE=`date --date="$DATE" +"%s"` //applying date command on string and getting the unixtime Please use code tags... (7 Replies)
Discussion started by: Rashu123
7 Replies

5. Shell Programming and Scripting

Using awk or nawk to convert epoch time to date format

Looking for some help and usually when I do a search this site comes up. Hopefully someone can give me a little direction as to how to use one of these two commands to achieve what I'm trying to do. What am I trying to do? I need to take the time value in epoch format returned from the... (5 Replies)
Discussion started by: minigts
5 Replies

6. Shell Programming and Scripting

Convert epoch to human readable date & time format

Hello I have log file from solaris system which has date field converted by Java application using System.currentTimeMillis() function, example is 1280943608380 which equivalent to GMT: Wed, 04 Aug 2010 17:40:08 GMT. Now I need a function in shell script which will convert 1280943608380... (3 Replies)
Discussion started by: Yaminib
3 Replies

7. Shell Programming and Scripting

Need to convert an epoch date to MMDDYYHHmm format

System: HP-UX Kornshell Perl is installed, but not POSIX Hello, I am calculating a future date/time. To do this I take the system date in epoch format and add to it. I now need to take the new epoch date and convert it to MMDDYYHHmm format. Any help with this is greatly appreciated. (4 Replies)
Discussion started by: LetsGoPens
4 Replies

8. Shell Programming and Scripting

Convert value stored in a variable to epoch time?

Hello I have a the creation date of a file stored in a variable in the following format: Wed May 06 10:14:58 2009Is there a way I can echo the variable and display it in epoch time? I've done a lot of searching on this topic, but haven't managed to get a solution. I'm on Solaris 10. ... (2 Replies)
Discussion started by: Glyn_Mo
2 Replies

9. Shell Programming and Scripting

Convert date into epoch in Perl on Solaris

Solaris 10 doesn't seem to like me a lot. I am trying to run a simple script to accept date and return epoch of that date: #!/usr/bin/perl -w use strict; use Time::ParseDate; my($date1)="Mon Mar 27 05:54:08 CDT 2009"; chomp $date1; #Convert to seconds since start of epoch my $time1 =... (3 Replies)
Discussion started by: pavanlimo
3 Replies

10. Linux

Incrementing the date stored in the variable

Hi all, I have a variable with date as 20080831 . Now I want to increment it as 20080901 and so on.Is there any command for this. Please help me. thanks rameez (1 Reply)
Discussion started by: rameezrajas
1 Replies
Login or Register to Ask a Question

Featured Tech Videos