पर पर्यावरण चर निर्यात करना मैं मेकफ़ाइल के भीतर एक खोल कमांड का तत्काल विस्तार करना चाहता हूं, लेकिन मैं चाहता हूं कि शेल कमांड को मेकफ़ाइल के भीतर पर्यावरण चरों तक पहुंच प्राप्त हो। अगर मैं $ (खोल ...) का उपयोग करता हूं, तो यह तुरंत फैलता है, लेकिन चरों तक कोई पहुंच नहीं है। यदि मैं बैकक्वॉट्स का उपयोग करता हूं, तो विस्तार तत्काल नहीं है, और यह मेकफ़ाइल में बाद में मेरे लिए समस्याएं पैदा करता है। मैं सोच रहा हूं कि बैकक्वॉट्स को तुरंत विस्तारित करने का कोई तरीका है या वर्तमान वातावरण को $ (खोल) कमांड में पास करने के लिए कोई तरीका है।मेकफ़ाइल खोल
उदाहरण के लिए, निम्नलिखित makefile:
SOME_VAR := some_val
export SOME_VAR
VAR1 := `echo $$SOME_VAR`
export VAR1
VAR2 := `echo $$VAR1`
all:
@echo VAR1=$(VAR1)
@echo VAR2=$(VAR2)
विल उत्पादन:
~/tmp/t2> make
VAR1=some_val
VAR2=`echo $SOME_VAR`
मैं इसे कहाँ मुद्रित करने के लिए "var2 = some_val" चाहते हैं। वास्तविक उदाहरण थोड़ा अधिक जटिल है (पर्यावरण चर को मूल मेकफ़ाइल से विरासत में मिला है, और मैं चर को संपादित करने के लिए एक पर्ल स्क्रिप्ट का उपयोग करने की कोशिश कर रहा हूं), लेकिन सिद्धांत समान है।
किसी भी मदद की सराहना की जाती है।
हममम ... हाँ, मेरे उदाहरण त्रुटिपूर्ण था। ..उपर्युक्त उदाहरण में, VAR1 को मेकफ़ाइल के भीतर विस्तारित किया गया है, लेकिन मुझे जो चाहिए वह VAR1 को शैल स्क्रिप्ट के भीतर विस्तारित किया जाना है। यही है, मैं एक पर्ल स्क्रिप्ट को बुला रहा हूं जिसे ENV {'VAR1'} तक पहुंचने की आवश्यकता है। अगर $ (खोल ...) से बुलाया जाता है तो स्क्रिप्ट को पता नहीं होगा कि वीएआर 1 क्या है। मैं अपने प्रश्न को एक बेहतर उदाहरण के साथ संपादित करूंगा। धन्यवाद। – John
@ जॉन, मैं वास्तव में समझ नहीं पा रहा हूं कि आप यहां क्या करने की कोशिश कर रहे हैं। मैं कुछ अनुमान लगा सकता हूं, लेकिन मुझे लगता है कि अगर आप अपना प्रश्न संपादित करते हैं तो यह तेज़ होगा। – Beta
मैं वास्तव में क्या करने की कोशिश कर रहा हूं: मेरे पास एक मेकफ़ाइल है जिसे ऑब्जेक्ट फ़ाइल बनाने और उसे कॉन्फ़िगरेशन सेटिंग्स के अनुसार नामित किया जाना चाहिए। मेरे पास एक पर्ल स्क्रिप्ट है जो कॉन्फ़िगरेशन सेटिंग्स को किसी नाम में अनुवाद करती है। इसे काम करने के लिए, पर्ल स्क्रिप्ट को कॉन्फ़िगरेशन सेटिंग्स तक पहुंच प्राप्त करनी होगी (इसके लिए बैकक्वॉट का उपयोग करना होगा)। यह स्वयं ही ठीक होगा, लेकिन फिर नाम किसी अन्य पर्ल स्क्रिप्ट में उपयोग किया जाना चाहिए। चूंकि नाम दूसरी स्क्रिप्ट चलाने के समय तक विस्तारित नहीं होता है, इसलिए यह एक त्रुटि का कारण बनता है। मैं एक कामकाज की तलाश में हूँ। – John