2009-12-07 9 views
16

में पर्यावरण चर के लिए दिनांक और समय जोड़ना मेरे मेकफ़ाइल में मैं वर्तमान दिनांक और समय का उपयोग करके एक पर्यावरण चर बनाना चाहता हूं। छद्म कोड:लिनक्स मेकफ़ाइल

LOG_FILE := $LOG_PATH + $SYSTEM_DATE + $SYSTEM_TIME 

किसी भी मदद की सराहना की - धन्यवाद।

उत्तर

19

आप इस का उपयोग कर सकते का उपयोग कर सकते हैं:

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

इस कारण लॉगफ़ाइल हर यह प्रयोग किया जाता है evaulated जा करने के लिए नहीं होगा। उदाहरण के लिए: लॉगफ़ाइल = लॉग/'तिथि + '% y% m% डी% एच:।।% एम:% S'' echo_logs: $ (लॉगफ़ाइल) नींद 5s गूंज गूंज $ (logFile $) प्रिंट होगा:। गूंज लॉग/'तिथि + '% y% m% डी% एच:।% एम:% S'' लॉग/10.01.28-14: 21: 08 नींद 5s गूंज लॉग/'दिनांक + '% y।% एम।% डी-% एच:% एम:% एस'लॉग/10.01.28-14: 21: 13 – Aaron

+4

@Aaron: आप सही हैं; इससे बचने के लिए gnu का उपयोग बैकटिक्स के बजाय 'shell' फ़ंक्शन' का उपयोग कर सकते हैं: 'LOGFILE = $ (LOGPATH) $ (खोल दिनांक)' – catwalk

+1

सहमत है, और पूर्णता के लिए: LOGFILE = $ (LOGPATH) $ (खोल दिनांक + '% Y ।।% m% डी% एच:% एम:% S ')। Solaris पर भी काम करता है। – anisbet

24

आप मेकअप में $ (शेल आपरेशन) आदेश का उपयोग करने की आवश्यकता है। यदि आप operation का उपयोग करते हैं, तो शेल कमांड का मूल्यांकन हर बार किया जाएगा। यदि आप एक लॉग फ़ाइल में लिख रहे हैं, तो आप एक फ़ाइल बनाने के लिए लॉग फ़ाइल नाम बदलना नहीं चाहते हैं जब भी आप इसे एक ही कमांड कमांड में एक्सेस करते हैं।

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

लेकिन यह अलग-अलग लक्ष्य पर समान नहीं रहता है। –