2009-12-07 17 views

Respuesta

19

puede utilizar esto:

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

¿No esta causa LOGFILE a ser evaulated cada vez que se utiliza. Por ejemplo: LOGFILE = logs/'date + '% y% m% d-% H:..% M:% S'' echo_logs: echo $ (LOGFILE) 5s sueño echo $ ($ LOGFILE) imprimirá:. registros de eco/'date + '% y% m% d-% H:.% m:% S'' logs/10.01.28-14: 21: 08 dormir 5s registros de eco/'fecha + '% y.% m.% d-% H:% M:% S'' registros/10.01.28-14: 21: 13 – Aaron

+4

@ Aaron: Tienes razón; para evitar esto uno puede usar gnu make 'shell' en lugar de backticks:' LOGFILE = $ (LOGPATH) $ (fecha de shell) ' – catwalk

+1

De acuerdo, y para completar: LOGFILE = $ (LOGPATH) $ (shell date + '% Y .% m.% d-% H:% M:% S '). También funciona en Solaris. – anisbet

1

puede utilizar el comando "fecha"

24

Es necesario utilizar el comando $ (operación cáscara) en el maquillaje. Si usa operation, el comando de shell se evaluará cada vez. Si está escribiendo en un archivo de registro, no desea que el nombre del archivo de registro cambie cada vez que accede a él en un único comando make.

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

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

Esta es la salida:

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

Pero esto no se mantiene igual en un objetivo diferente. –

Cuestiones relacionadas