2009-12-07 27 views

cevap

19

"tarihi" komutunu kullanabilirsiniz:

Sen makyajda da $ (kabuk işlemi) komutunu kullanmak gerekir
LOGFILE=$(LOGPATH) `date +'%y.%m.%d %H:%M:%S'` 
+3

bu neden LOGFILE kullanıldığı her şey değerlendirilmektedir edilecek olmaz. Örneğin : LOGFILE = günlükleri/'tarihi + '% y% m% d-% H:..% M:% S'' echo_logs: $() günlük uyku 5s yankı yankı $ ($) günlük yazdırır. yankı günlükleri/'tarihi + '% y% m% d-% H:.% M:% S'' günlükleri/10.01.28-14: 21: 08 uyku 5s echo kütükleri/'tarih + '% y.% m.% d-% H:% M:% S' logs/10.01.28-14: 21: 13 – Aaron

+4

@Aaron: Haklısınız; Bunu önlemek için gnu make 'shell' işlevini backticks yerine kullanabilirsiniz:' LOGFILE = $ (LOGPATH) $ (kabuk tarihi) ' – catwalk

+1

Anlaşıldı ve tamlık için: LOGFILE = $ (LOGPATH) $ (shell date + '% Y ..% m% d-% H:% m:% S '). Ayrıca Solaris üzerinde çalışıyor. – anisbet

24

. operation kullanırsanız, her seferinde kabuk komutu değerlendirilir. Bir günlük dosyasına yazıyorsanız, günlük dosya adının tek bir make komutunda her eriştiğinizde değişmesini istemezsiniz.

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

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

çıktısı verir:

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

Fakat bu farklı hedeflerde aynı kalmıyor. –

İlgili konular