पायथन में पिछले कमांड का निकास कोड प्राप्त करें? - अजगर, बाश, खोल

क्या पिछले कमांड का एक्ज़िट कोड प्राप्त करना संभव है जैसा कि पाइथन में खोल पर चल रहा है?

मैं एक स्क्रिप्ट लिखना चाहता हूं जो वर्तमान में सेट किया गया एक ही त्रुटि कोड लौटाएगा (मान लें कि पायथन कमांड सफल है)। यह इस तरह कुछ ऐसा करने के बराबर होगा:

#!/bin/bash
err=$?

# Do something...

exit $err

यदि संभव हो, तो मैं इसे तर्क के रूप में पास करने से बचना चाहूंगा। उदाहरण के लिए:

python script.py $?

उत्तर:

जवाब के लिए 2 № 1

मैं कहता हूं कि आपका समाधान ("पिछला कमांड" और पायथन स्क्रिप्ट दोनों को एक स्क्रिप्ट स्क्रिप्ट में लपेटना जो रिटर्न कोड का ट्रैक रखता है) जाने का तरीका है:

#!/bin/bash
first_command
ERR=$?
python second_script.py
exit $ERR

पाइथन लिपि अधिक पुन: प्रयोज्य होगी क्योंकि इसे अपने पर्यावरण के बारे में किसी भी धारणा पर भरोसा नहीं करना पड़ेगा।

किसी भी कारण से यह रैप समाधान आपके मामले में फिट नहीं है?


जवाब के लिए 2 № 2

आईएमएचओ यह संभव नहीं है। बैश द्वारा शुरू की गई कमांड में शैल वैरिएबल तक पहुंच नहीं है और न ही खोल के लिए। यह केवल जानता है:

  • पर्यावरण में मौजूद सभी चर (लेकिन $? नहीं है)
  • खोल के ढक्कन और इसके माध्यम से खोल का मार्ग

लेकिन मुझे और अधिक पाने के लिए कोई भी बैश एपीआई नहीं पता है।


संबंधित सवाल
सबसे लोकप्रिय