2013-01-21 41 views
5

की जाँच करें मेरी खोल स्क्रिप्ट के भीतर मैं इस कमांड चलाएँ:खोल स्क्रिप्ट के भीतर एक अजगर स्क्रिप्ट चल रहा है - स्थिति

  1. मैं कैसे कार्यक्रम कर सकते हैं: एक दो भाग सवाल के रूप में,

    python script.py 
    

    मैं सोच रहा था पाइथन लिपि में क्या होता है, इस पर निर्भर करता है कि मेरी पाइथन स्क्रिप्ट उस स्थिति को वापस ले जाने के लिए शेल स्क्रिप्ट पर वापस ले जाती है। उदाहरण के लिए यदि पाइथन लिपि में कुछ गलत हो जाता है तो यह 1 के कोड से बाहर निकलता है जिसे वापस खोल में भेजा जाता है।

  2. मैं अपने खोल स्क्रिप्ट में कोई त्रुटि के लिए अजगर और बाहर निकलने के निकास कोड को पढ़ने के लिए कैसे मिल सकता है? उदाहरण के लिए, 0 के अलावा कुछ भी का स्टेटस कोड और बाहर निकलें।

+0

# 2 के लिए: http:/लेकिन, आप यह स्पष्ट रूप से जांच करने की आवश्यकता नहीं हो सकता है /stackoverflow.com/questions/90418/exit-shell-script-based-on-process-exit-code?rq=1 – acjay

उत्तर

13

सबसे पहले, आप अपनी पायथन लिपि में sys.exit पर तर्क के रूप में वांछित निकास कोड को पास कर सकते हैं।

दूसरा, हाल ही में बाहर निकलने वाली प्रक्रिया का निकास कोड bash पैरामीटर $? में पाया जा सकता है।

if python script.py; then 
    echo "Exit code of 0, success" 
else 
    echo "Exit code of $?, failure" 
fi 

स्पष्ट रूप से बाहर निकलने के कोड की जाँच करने के लिए आप if बयान के एक सशर्त अभिव्यक्ति की आपूर्ति करने की जरूरत है,:

python script.py 
if [[ $? = 0 ]]; then 
    echo "success" 
else 
    echo "failure: $?" 
fi 
+0

मैं कह रहा अजगर script.py इसे चलाने के लिए अपने कोड से पहले एक लाइन की जरूरत है? – Jimmy

+0

या इसके बजाए, क्या आपका कोड भी स्क्रिप्ट चलाता है? – Jimmy

+0

'if' कथन में दिए गए आदेशों की सूची निष्पादित की जाती है, और इसका निकास कोड निर्धारित करता है कि' if' की कौन सी शाखा अगले निष्पादित की जाती है। – chepner