Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Prefixing logs with date in shell script

Tags:

date

shell

echo

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.

like image 858
rouble Avatar asked Nov 10 '09 05:11

rouble


1 Answers

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

echodate Some text 1
echodate Some text 2
like image 75
mob Avatar answered Sep 22 '22 16:09

mob