(एक समारोह इसकी गूंज प्राप्त करने के लिए कहा जाता है से) मैं इस तरह एक कोड है:निर्यात काम नहीं कर रहा
#!/usr/bin/env bash
test_this(){
export ABC="ABC"
echo "some output"
}
final_output="the otput is $(test_this)"
echo "$ABC"
दुर्भाग्य से चर ABC
सेट नहीं की जा रही है।
मुझे test_this
पर कॉल करना है, क्योंकि मेरे असली कार्यक्रम में मैं कुछ तर्क देता हूं, यह विभिन्न जटिल कार्यों को कई अन्य कार्यों को बुलाता है, जिस तरह से यह निर्यात करता है या (उन तर्कों पर आधारित), और अंत में कुछ आउटपुट स्ट्रिंग को वापस करने के लिए इकट्ठा किया जाता है। एक बार निर्यात करने के लिए इसे दो बार कॉल करना और आउटपुट स्ट्रिंग के लिए एक बार खराब होगा।
सवाल यह है कि मैं निर्यात और आउटपुट स्ट्रिंग दोनों जगहों पर रखने के लिए क्या कर सकता हूं, लेकिन केवल एक समारोह के लिए एक कॉल करके?
जवाब है कि मैं के साथ खुश हूँ (धन्यवाद paxdiablo):
#!/usr/bin/env bash
test_this(){
export ABC="ABC"
export A_VERY_OBSCURE_NAME="some output"
}
test_this
final_output="the otput is $A_VERY_OBSCURE_NAME"
echo "$ABC" #works!
unset A_VERY_OBSCURE_NAME
इस अंतर्दृष्टि के लिए धन्यवाद, लेकिन यह मेरी मदद नहीं करता है। क्या कोई तरीका है कि मैं इस फ़ंक्शन को कॉल या बदल सकता हूं, ताकि मैं वास्तव में बाहर निर्यात प्राप्त कर सकूं? – robert
@robert: अद्यतन देखें। आपकी वास्तविक समस्या यह है कि '$()' जरूरी रूप से एक उपप्रजाय बनाता है ताकि किसी भी पर्यावरण परिवर्तन उस उपप्रजाति तक सीमित रहे। यदि आप इसके बजाय फ़ंक्शन को सीधे कॉल करते हैं, तो आप वर्तमान प्रक्रिया वातावरण को प्रभावित कर सकते हैं। – paxdiablo
धन्यवाद, मैं दूसरे विकल्प के साथ गया, अंत में जोड़ रहा हूं: आउटपुट आउटपुट। – robert