tags:

views:

103

answers:

4

Hi All,

I have a shell script with a lot of echo statements. I want to prefix each line of output with the time/date.

So, I replaced every

echo "Some text1"
echo "Some text2"

with

echo "`date +%y/%m/%d_%H:%M:%S`:: some text1"
echo "`date +%y/%m/%d_%H:%M:%S`:: some text2"

This is rather ugly. Is there anyway to create an alias (or the analog to a #define in C), to make it cleaner.

Obviously, doing something like:

DATE=`date +%y/%m/%d_%H:%M:%S`
echo "$DATE:: some text1"
echo "$DATE:: some text2"

... would not work, because in that case the DATE is only calculated once and each echo would have the same date.

I am thinking about replacing every echo with a print function call, that does the prefixing. I want to know if anyone has any other/better ideas.

tia, rouble

A: 

Nope, the print function that does the prefixing is the way to go.

Jim Garrison
+5  A: 
echodate()
{
    echo `date +%y/%m/%d_%H:%M:%S`:: $*
}

echodate Some text 1
echodate Some text 2
mobrule
A: 

If you're using bash...:

#!/bin/bash

function myecho() {
        echo "`date +%y/%m/%d_%H:%M:%S`:: $@"
}

myecho "hola"
Gonzalo
+1  A: 

Yes, shell function or conversely use an alias:

alias now="date +%s" # or your specific date format
echo "`now` some text"
Xepoch