2.21111111111Rating 2.20 (10 Votes)

Видел множество различных / сам написал много bash скриптов, часто видно, как кто-то пишет этапы выполнения скрипта в лог файл. В начале скрипта указывает переменную типа:

myvar=$(date '+%d-%m-%Y_%H-%M-%S')

Потом в echo отправляет это все в лог примерно так:

echo "Бэкап началася в $myvar" >> /var/log/my.log

И в конце выполнения операции:

echo "Бэкап закончен в $myvar" >> /var/log/my.log

Или в конце скрипта по факту завершения его работы, может быть указано что то типа:

echo "Работа скрипта завершена в $myvar)

Или:

...
echo "$myvar софт установлен!"
...
echo "$myvar виртауальная машина создана!"
...

Это типичная ошибка, так как такой метод будет отображать всегда одно и то-же время, время которое было присвоено переменной на момент запуска скрипта. Для примера создадим скрипт:

#!/bin/bash
myvar=$(date '+%d-%m-%Y_%H-%M-%S')

echo $myvar

sleep 5
echo $myvar

sleep 10
echo $myvar

Т.е. понятно - запуск, пауза 5 секунд, пауза 10 секунд, итоговый результат:

22-01-2019_21-37-09
22-01-2019_21-37-09
22-01-2019_21-37-09

Для отображения актуального времени можно конечно использовать такой вариант:

#!/bin/bash
echo "Начало работы $(date '+%d-%m-%Y_%H-%M-%S')"

sleep 5
echo "Спутся 5 секунд $(date '+%d-%m-%Y_%H-%M-%S')"

sleep 10
echo "Завершение $(date '+%d-%m-%Y_%H-%M-%S')"

Результат уже радует:

Начало работы 22-01-2019_21-41-23
Спутся 5 секунд 22-01-2019_21-41-28
Завершение 22-01-2019_21-41-38

 Да, веселее, но ИМХО много "букв", проще вынести это в функцию, например так:

getDate() {
  date '+%d-%m-%Y_%H-%M-%S'
}

После сего заюзать в скрипте, для наглядности рабочий скрипт:

#!/bin/bash

getDate() {
	date '+%d-%m-%Y_%H-%M-%S'
}

myvar=$(date '+%d-%m-%Y_%H-%M-%S')

echo $(getDate), $myvar

sleep 5

echo $(getDate), $myvar

sleep 10

echo $(getDate), $myvar

Результат:

22-01-2019_21-44-59, 22-01-2019_21-44-59
22-01-2019_21-45-04, 22-01-2019_21-44-59
22-01-2019_21-45-14, 22-01-2019_21-44-59

Happy scripting :)

Добавить комментарий


Защитный код
Обновить

Сейчас один гость и ни одного зарегистрированного пользователя на сайте

Вверх
Вниз