मैंने अभी लगभग वैसी ही स्थिति तय की है। आशा है कि यह अभी भी आपकी मदद करता है, यदि नहीं तो शायद अन्य। मैंने सु से शुरू किया, सूडो से नहीं, लेकिन जब से सूदो को एक अन्य कमांड को लपेटने का इरादा है, यह वास्तव में सु के निकास कोड को रिले करना चाहिए। यदि नहीं, तो आप सुडो स्तर पर भी नीचे दिए गए सुधार को लागू कर सकते हैं।
जैसे आपने नोट किया कि मुख्य समस्या यह है कि su सफलतापूर्वक अपने कमांड को निष्पादित करता है। डिफ़ॉल्ट क्रिया के बाद यह रिपोर्ट करना है कि यह बिना किसी समस्या के पूरा हुआ और इसलिए यह निकास कोड 0. लौटाता है। यह "नहीं जानता" कि एक कमांड से एक गैर 0 निकास कोड अप्रत्याशित था, या कि इसे इसके साथ कुछ करना चाहिए। इस प्रकार समाधान काफी सरल है, ताकि यह अंतिम कमांड का निकास कोड वापस कर सके। इसने मेरे लिए यह किया
su <user_x> -c '<bunch_of_commands>; exit $?'
मामले में sudo अच्छा नहीं खेलता है, पूरी कमांड कुछ इस तरह होनी चाहिए (मैं आपके लिए यह जाँच करूँगा लेकिन मेरे पास sudo स्थापित नहीं है)
sudo 'su <user_x> -c \'<bunch_of_commands>; exit $?\'; exit$?'
उद्धरण के घोंसले के लिए देखो और $ सुनिश्चित करें? विस्तार नहीं मिलता है, इसलिए कोई दोहरे उद्धरण नहीं।