पैरेंट प्रक्रिया में चर कैसे निर्यात करें


3

मैं मूल प्रक्रिया में वापस चर निर्यात करने की कोशिश कर रहा हूं।

$ export VAR=FALSE
$ echo $VAR
FALSE
$ ./myprogram
$ echo $VAR
TRUE  <========== I want to print `TRUE` here

जवाबों:


4

नहीं किया जा सकता है। मूल प्रक्रिया के लिए कुछ भी पास करने का एकमात्र विश्वसनीय तरीका यह है कि इसे प्रतिध्वनित करें और मूल प्रक्रिया को कमांड प्रतिस्थापन के साथ कैप्चर करें।

VAR=$(./myprogram)

मुझे लगता है कि कुछ कार्यक्रमों में भी अपने आउटपुट को उसी के अनुसार तैयार करने के विकल्प हैं।
डैनियल बेक

निर्भर करता है कि आप विश्वसनीय के साथ क्या मतलब है। नामित पाइप रेस की स्थिति के बिना एक बहुत विश्वसनीय तरीका है।
पिथिकोस

सबसे आसान तरीका है var=valueबच्चे में जोड़ों को गूंजना और कॉल करना eval $(./myprogram)
user93692

आप एक सरणी के साथ यह कैसे करते हैं, उदा echo "$@"?
jchook

यह एकमात्र तरीका नहीं है, यहाँ उत्तर दिया गया है: unix.stackexchange.com/questions/38205/…
Andry

0

वास्तव में ... मुझे यह अभी काम करने के लिए मिला है source

यदि myprogramशामिल हैं:

export VAR=TRUE

तो source myprogramआपके मामले को चलाने के बाद काम करेगा।


इसके बिना भी काम करना चाहिए export, लेकिन यह स्पष्ट रूप से कहा जाना चाहिए कि यह शाब्दिक प्रश्न का उत्तर नहीं देता है। sourceएक बच्चा पैदा नहीं करता है, यहाँ कोई बच्चा नहीं है, मूल bashएक माता पिता की प्रक्रिया नहीं है।
कामिल मैकियोरोव्स्की

आपने मूल प्रक्रिया में चर निर्यात नहीं किया, आपने उन्हें वर्तमान प्रक्रिया में शामिल किया , जैसे sourceकि "एक फ़ाइल सहित"। यह कुछ मामलों में मदद कर सकता है, लेकिन यह "माता-पिता की प्रक्रिया में चर कैसे निर्यात करें" इस सवाल का हल नहीं है।
मार्क स्टोसबर्ग
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.