[nycbug-talk] Scripting(Date&Time) Question

Kevin Reiter tux at penguinnetwerx.net
Fri Dec 29 15:19:02 EST 2006


Steven Kreuzer wrote:
> On Dec 29, 2006, at 1:41 PM, michael wrote:
> 
>> On Fri, 29 Dec 2006 13:32:56 -0500
>> Kevin Reiter <tux at penguinnetwerx.net> wrote:
>>
>>> All,
>>>
>>> Fairly simple (I think) question here:
>>>
>>> When echoing the date into a logfile from a script, I'm noticing the
>>> time never changes.
>>>
>>> Here's an example of the resulting log entries:
>>>
>>> 12/29/2006 13:15:47: www_data compressed.
>>> 12/29/2006 13:15:47: Database dump done.
>>> 12/29/2006 13:15:47: Checksums created.
>>> 12/29/2006 13:15:47: Other stuff done.
>>> 12/29/2006 13:15:47: Sending files to remote server...
>>> 12/29/2006 13:15:47: Files sent.
>>>
>>> Here's the code snippet that defines the date format:
>>>
>>> DATE=`date +'%m/%d/%Y %H:%M:%S'`
>>>
>>> Here's the actual code snippets in the script that echo the $DATE
>>> into the log:
>>>
>>> echo "$DATE: www_data compressed." >> www_backup.log
>>> echo "$DATE: Database dump done." >> www_backup.log
>>> echo "$DATE: Checksums created." >> www_backup.log
>>> ...etc...
>>>
>>> Is there a reason the time isn't updated when the script runs?  I'm
>>> guessing here that the $DATE variable grabs the current time when the
>>> script kicks off and doesn't update it in real-time as the script
>>> proceeds - would that be a close guess?
>>>
>>> What would need to be changed in order for the current time to be
>>> entered into the logfile? Any assistance would be most appreciated.
>>>
>>> Kev
>> At first blush, it looks like you only initialize $DATE once at the
>> start.  So.. your assumption looks right from here.
>>
>> --  
>>
>> michael
> 
> The easiest way to work around it would be to write a function called  
> log which looks something like the example script below:
> 
> #### Start Script
> function log() {
>          NOW=$(date +'%m/%d/%Y %H:%M:%S')
>          echo "${NOW} - ${1}"
> }
> 
> log "OMG"
> sleep 10
> log "WTF"
> sleep 10
> log "BBQ"
> #### End Script
> 
> This was written in ksh, but it should work in bash or whatever  
> inferior shell you use ;)
> 
> Basically, you have a function called log that you pass a string, and  
> then when the function gets called the variable $NOW gets set with  
> the current date. (The variable $1 holds the string that you passed it.)
> 
> example output:
> 
> $ ./example.sh
> 12/29/2006 13:51:19 - OMG
> 12/29/2006 13:51:29 - WTF
> 12/29/2006 13:51:39 - BBQ

That's awesome (even if you used a korny shell to write it in :)
Thanks!



More information about the talk mailing list