आप मेकअप में $ (शेल आपरेशन) आदेश का उपयोग करने की आवश्यकता है। यदि आप 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
इस कारण लॉगफ़ाइल हर यह प्रयोग किया जाता है 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
@Aaron: आप सही हैं; इससे बचने के लिए gnu का उपयोग बैकटिक्स के बजाय 'shell' फ़ंक्शन' का उपयोग कर सकते हैं: 'LOGFILE = $ (LOGPATH) $ (खोल दिनांक)' – catwalk
सहमत है, और पूर्णता के लिए: LOGFILE = $ (LOGPATH) $ (खोल दिनांक + '% Y ।।% m% डी% एच:% एम:% S ')। Solaris पर भी काम करता है। – anisbet