2012-03-01 16 views
24

यदि कार्य किसी स्थानीय चर के फ़ंक्शन में असाइनमेंट है तो मैं बैश में कमांड प्रतिस्थापन के निकास कोड को कैसे देख सकता हूं?
कृपया निम्नलिखित उदाहरण देखें। दूसरा वह स्थान है जहां मैं निकास कोड देखना चाहता हूं।
क्या किसी के पास इसके लिए अच्छा काम-आसपास या सही समाधान है?बैश स्थानीय चर असाइनमेंट में कमांड प्रतिस्थापन का निकास कोड

$ function testing { test="$(return 1)"; echo $?; }; testing 
1 
$ function testing { local test="$(return 1)"; echo $?; }; testing 
0 

उत्तर

31

आप local के लिए आदमी फ़ाइल (जो वास्तव में सिर्फ मार builtins आदमी पृष्ठ है) को देखें, तो यह अपने आप ही आदेश है, जो सफलतापूर्वक स्थानीय चर बनाने पर 0 की एक निकास कोड देता है माना जाता है। तो local अंतिम-निष्पादित त्रुटि कोड को ओवरराइट कर रहा है।

इस प्रयास करें:

function testing { local test; test="$(return 1)"; echo $?; }; testing 

संपादित करें: मैं आगे चला गया और आप के लिए यह करने की कोशिश की, और यह काम करता है।

+0

धन्यवाद, हमेशा की तरह, मैंने अपना प्रश्न पोस्ट करने के ठीक बाद मुझे जवाब स्वयं पाया जो आपके जैसा सुझाव देता है। मेरे पास 8 घंटे बीतने से पहले मेरे अपने सवालों के जवाब देने के लिए बहुत प्रतिष्ठा है। लेकिन 'मैन लोकल' मुझे 'LOCAL (8postfix)' मैनपेज का मैन पेज देता है, इसलिए बहुत उपयोगी नहीं है। लेकिन मैंने इसे http://mywiki.wooledge.org/BashPitfalls#local_varname.3D.24.28command.29 – Vampire

+0

पर पाया, जानकारी का एक और स्रोत 'मैन बाश' होगा। "शेल बिल्टिन कमांड" अनुभाग के तहत 'स्थानीय' का उल्लेख किया गया है। –

+0

'help' कमांड अंतर्निहित कमांड पर दस्तावेज़ लौटाता है। 'स्थानीय सहायता' देखें। – Eliot

संबंधित मुद्दे