В моем файле Makefile Я хочу создать переменную среды, используя текущую дату и время. Псевдокод:Добавить дату и время в переменную окружения в файле linux
LOG_FILE := $LOG_PATH + $SYSTEM_DATE + $SYSTEM_TIME
Любая помощь оценена - спасибо.
В моем файле Makefile Я хочу создать переменную среды, используя текущую дату и время. Псевдокод:Добавить дату и время в переменную окружения в файле linux
LOG_FILE := $LOG_PATH + $SYSTEM_DATE + $SYSTEM_TIME
Любая помощь оценена - спасибо.
вы можете использовать это:
LOGFILE=$(LOGPATH) `date +'%y.%m.%d %H:%M:%S'`
вы можете использовать команду "Дата"
Вы должны использовать команду $ (операция оболочки) в производстве. Если вы используете operation
, тогда команда оболочки будет оцениваться каждый раз. Если вы пишете файл журнала, вы не хотите, чтобы имя файла журнала изменялось каждый раз, когда вы обращаетесь к нему в одной команде make.
LOGPATH = logs
LOGFILE = $(LOGPATH)/$(shell date --iso=seconds)
test_logfile:
echo $(LOGFILE)
sleep 2s
echo $(LOGFILE)
Этот выход будет:
echo logs/2010-01-28T14:29:14-0800
logs/2010-01-28T14:29:14-0800
sleep 2s
echo logs/2010-01-28T14:29:14-0800
logs/2010-01-28T14:29:14-0800
Но это не остается таким же на разных объектах. –
Будет ли это причиной LOGFILE быть evaulated каждый раз, когда он используется. Например: LOGFILE = журналы/'дата + '% г% м% d-% Н:..% M:% S'' echo_logs: эхо $ (LOGFILE) 5s сна эхо $ ($ LOGFILE) будет печатать:. эхо-журналы/'дата + '% г% м% d-% Н:.% М:% S'' журналы/10.01.28-14: 21: 08 sleep 5s echo logs/'date + '% y.% m.% d-% H:% M:% S'' logs/10.01.28-14: 21: 13 – Aaron
@Aaron: Вы правы; чтобы избежать этого, можно использовать gnu make 'shell' вместо backticks:' LOGFILE = $ (LOGPATH) $ (дата оболочки) ' – catwalk
Согласовано и для полноты: LOGFILE = $ (LOGPATH) $ (дата оболочки + '% Y ..% м% d-% H:% M:% S '). Также работает на Solaris. – anisbet