2009-12-07 3 views

답변

19

"날짜"명령을 사용할 수 있습니다

당신은 메이크업에 $ (쉘 작업) 명령을 사용할 필요가
LOGFILE=$(LOGPATH) `date +'%y.%m.%d %H:%M:%S'` 
+3

이 원인 LOGFILE은 사용 매번 evaulated 수하지 않음. 예 : LOGFILE = 로그 /'일 + '% Y %의 m % D- % H :.. %의 M %의 S'' echo_logs : 은 $ (LOGFILE) 슬립 5S 에코 에코 $ ($의 LOGFILE) 인쇄 것이다. 에코 로그/일 '+'% Y %의 m을 % D- % H :. % M : %의 S'' 로그/10.01.28-14 : 21 : 08 sleep 5s 반향 로그 /'date + '% y. % m. % d- % H : % M : % S'' logs/10.01.28-14 : 21 : 13 – Aaron

+4

@Aaron : 당신 말이 맞습니다. 이것을 피하기 위해 gnu는 backticks 대신에'shell' 함수를 사용할 수있다 : LOGFILE = $ (LOGPATH) $ (shell date)' – catwalk

+1

. % m. % d- % H : % M : % S '). Solaris에서도 작동합니다. – anisbet

1

당신은 당신이 사용할 수

24

. 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 
+2

그러나 이것은 다른 목표에서 동일하게 유지되지 않습니다. –

관련 문제