Префикс логов с датой в сценарии оболочки - PullRequest
5 голосов
/ 10 ноября 2009

У меня есть сценарий оболочки с множеством операторов echo. Я хочу добавить к каждой строке вывода время / дату.

Итак, я заменил каждый

echo "Some text1"
echo "Some text2"

с

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

Это довольно некрасиво. Есть ли в любом случае создать псевдоним (или аналог #define в C), чтобы сделать его чище.

Очевидно, что-то вроде:

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

... не будет работать, потому что в этом случае ДАТА рассчитывается только один раз, и каждый эхо будет иметь ту же дату.

Я думаю о замене каждого эха вызовом функции печати, которая выполняет префикс. Я хочу знать, есть ли у кого-нибудь другие / лучшие идеи.

Ответы [ 6 ]

12 голосов
/ 10 ноября 2009
echodate()
{
    echo `date +%y/%m/%d_%H:%M:%S`:: $*
}

echodate Some text 1
echodate Some text 2
4 голосов
/ 10 ноября 2009

Если вы используете bash ...:

#!/bin/bash

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

myecho "hola"
3 голосов
/ 18 марта 2011
#!/bin/bash
echo() {
    printf "`date`: $1\n"
}

echo "test"

-

приведет к:

abi @ cefix: ~ $ sh test.sh

Пт 18. Март 13:33:35 CET 2011: тест

так что вам не нужно менять все ваши эхо-операторы.

3 голосов
/ 10 ноября 2009

Да, функция оболочки или наоборот использовать псевдоним:

alias now="date +%s" # or your specific date format
echo "`now` some text"
1 голос
/ 14 апреля 2011

Или просто сохраните формат:

format="+%y/%m/%d_%H:%M:%S::"
echo $(date $format) some text

Между прочим, не нужно много цитат.

0 голосов
/ 18 февраля 2014

Если вы используете KornShell (ksh), вот функция:

#** Description: Logs stringToLog to scriptLog using a standard date format.
#** Parameters:  ${1} stringToLog (Required)
#**              ${2} scriptLog (Required)
log() {
        echo "[`date +'%Y/%m/%d %H:%M:%S%s'`]: ${1}"  >> "${2}"
}

Пример вызова вышеуказанной функции:

log "Starting foo script." "${PWD}/logs/foo.log"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...