क्या कोई मुझे समझा सकता है कि नीचे यह सरल उदाहरण क्यों काम नहीं करता है।
इस उदाहरण में, "सहायक" फ़ंक्शन में पैरामीटर ("सेटवी" और "गेटवी") के रूप में एक अलग फ़ंक्शन होता है। "सेटवी" फ़ंक्शन के भीतर, चर का मान अपडेट किया जाता है। फिर भी, "getV" फ़ंक्शन के भीतर का मान पुराना मान बना रहता है। इसका कारण क्या है?
vari="Oh no... I'm old."
function init() {
helper setV
helper getV
}
function helper() {
($1)
}
function setV() {
vari="Hey! I'm new!"
}
function getV() {
echo $vari
}
init
1 उत्तर
($1)
में माता-पिता $1
को सबशेल में निष्पादित करने का कारण बनते हैं। इसका मतलब यह है कि जब सबशेल बाहर निकलता है तो कोई भी पर्यावरण/चर परिवर्तन खो जाता है।
अवलोकन करना:
$ x=; setx() { x=Y; }; echo "1 x=$x"; (setx); echo "2 x=$x"; setx; echo "3 x=$x"
1 x=
2 x=
3 x=Y
यदि आप चाहते हैं कि परिवर्तनशील परिवर्तन जीवित रहें, तो कमांड को सबशेल में न रखें।
प्रलेखन
man bash
से:
(सूची)
list
एक उपकोश वातावरण में क्रियान्वित किया जाता है (देखें COMMAND निष्पादन पर्यावरण नीचे)। वैरिएबल असाइनमेंट और बिल्टिन शेल के वातावरण को प्रभावित करने वाले आदेश प्रभावी नहीं रहते हैं आदेश पूरा होने के बाद। वापसी की स्थिति किसकी निकास स्थिति है?list
. [महत्व जोड़ें]
संबंधित सवाल
नए सवाल
bash
बैश कमांड शेल के लिए लिखी गई लिपियों के बारे में प्रश्नों के लिए। त्रुटियों / वाक्यविन्यास त्रुटियों के साथ शेल स्क्रिप्ट के लिए, कृपया यहां पोस्ट करने से पहले शेलचेक प्रोग्राम (या वेब शेलचेक सर्वर पर https://shellcheck.net) के साथ उन्हें जांचें। बैश के इंटरैक्टिव उपयोग के बारे में सवाल स्टैक ओवरफ्लो की तुलना में सुपर उपयोगकर्ता पर ऑन-टॉपिक होने की अधिक संभावना है।