Журналы префикса с датой в скрипте оболочки

StackOverflow https://stackoverflow.com/questions/1705743

  •  19-09-2019
  •  | 
  •  

Вопрос

У меня есть скрипт оболочки с большим количеством заявлений 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"

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

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

Это было полезно?

Решение

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

echodate Some text 1
echodate Some text 2

Другие советы

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

#!/bin/bash

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

myecho "hola"

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

alias now="date +%s" # or your specific date format
echo "`now` some text"
#!/bin/bash
echo() {
    printf "`date`: $1\n"
}

echo "test"

--

приведет к:

abi@cefix: ~ $ sh test.sh

FR 18. Mär 13:33:35 CET 2011: тест

Так что вам не нужно менять все свои заявления Echo.

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

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

Кстати, не так много цитат.

Если вы используете 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"
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top