Я хочу создать файлы журнала с отметками времени. В моем Makefile я получаю следующую дату:
DATE = $(shell date '+%Y-%m-%d-%H:%M:%S')
В моем рецепте я делаю пару grep для файла журнала:
my_long_run:
cd $(MYDIR); Running a tool for a long time | tee -i ./Log/my_long_run_log.$(DATE)
@sleep 2
@grep -iq "Status of the Job:0" Log/my_long_run_log.$(DATE)
@if [ ! -z "$(SOME_ENV_VAR)" ]; then ln -fs $(ANOTHER_ENV_VAR)/my_generate_file; fi; \
echo "$$dependencyTree" > $@; \
echo -e "\nWarning Summary:" >> $@; \
if grep -iq "warn.*total" Log/my_long_run_log.$(DATE) ; then grep -i "warn.*total" Log/my_long_run_log.$(DATE) >> $@; fi; \
if grep -iq "warn.*check" Log/my_long_run_log.$(DATE) ; then grep -i "warn.*check" Log/my_long_run_log.$(DATE) >> $@; fi; \
echo -e "\nError Summary:" >> $@; \
if grep -iq "error.*total" Log/my_long_run_log.$(DATE) ; then grep -i "error.*total" Log/my_long_run_log.$(DATE) >> $@; fi; \
if grep -iq "error.*check" Log/my_long_run_log.$(DATE) ; then grep -i "error.*check" Log/my_long_run_log.$(DATE) >> $@; fi;
Проблема заключается в следующем: на первом Дата расширяется как: 2020-02-26-09: 14: 09 . Но команда grep ищет файл с отметкой времени: 2020-02-26-09: 14: 10 grep: Log / my_long_run_log.2020-02-26-09: 14: 10: такого файла нет или каталог gmake: *** [my_long_run] Ошибка 2. И затем, конечно, мне нужно повторить этот запуск со временем выполнения 6-7 часов только из-за этого сбоя grep.
sleep 2
является преднамеренным. Поскольку у меня есть некоторые лаги в моем сервере, и файлы требуют времени, чтобы появиться. Но тем не менее, насколько мне известно, Makefile расширяет все рецепты перед выполнением команд. Почему $ (DATE) имеет два значения для одного рецепта? извините, за то, что не предоставил MWE, скорее абстрагированный. Любая помощь приветствуется.