2009-12-07 3 views

Répondre

19

vous pouvez utiliser ceci:

LOGFILE=$(LOGPATH) `date +'%y.%m.%d %H:%M:%S'` 
+3

Est-ce pas cette cause LOGFILE à evaulated chaque fois qu'il est utilisé. Par exemple: LOGFILE = logs/'date + '% y% m% d-% H:..% M:% S'' echo_logs: echo $ (LOGFILE) 5s sommeil echo $ ($ LOGFILE) imprimera:% m::% S'' logs/10.01.28-14: 21:. journaux d'écho/'date + '% y% d-% H% m. 08 sleep 5s logs d'écho/'date + '% y.% m.% d-% H:% M:% S'' logs/10.01.28-14: 21: 13 – Aaron

+4

@Aaron: Vous avez raison; pour éviter cela, on peut utiliser la fonction gnu make 'shell' au lieu de backticks:' LOGFILE = $ (LOGPATH) $ (date du shell) ' – catwalk

+1

D'accord, et pour l'exhaustivité: LOGFILE = $ (LOGPATH) $ (shell date + '% Y % m.% d-% H:% M:% S '). Fonctionne également sur Solaris. – anisbet

1

vous pouvez utiliser "date" commande

24

Vous devez utiliser la commande $ (opération shell) en faire. Si vous utilisez operation, la commande shell sera évaluée à chaque fois. Si vous écrivez dans un fichier journal, vous ne voulez pas que le nom du fichier journal change à chaque fois que vous y accédez dans une seule commande make.

LOGPATH = logs 
LOGFILE = $(LOGPATH)/$(shell date --iso=seconds) 

test_logfile: 
    echo $(LOGFILE) 
    sleep 2s 
    echo $(LOGFILE) 

Affichera:

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

Mais cela ne reste pas le même sur une cible différente. –

Questions connexes