ฉันเพิ่งแก้ไขสถานการณ์เดียวกันเกือบทั้งหมด หวังว่ามันจะช่วยคุณได้ ฉันเริ่มต้นจาก su ไม่ใช่ sudo แต่เนื่องจาก sudo ตั้งใจที่จะรวมคำสั่งอื่นคำสั่งเดียวจึงควรถ่ายทอดรหัสทางออกของ su ถ้าไม่คุณสามารถใช้การแก้ไขด้านล่างในระดับ sudo ด้วย
เช่นเดียวกับที่คุณจดบันทึกปัญหาหลักคือ su ดำเนินการคำสั่งของมันสำเร็จ การดำเนินการเริ่มต้นคือการรายงานว่ามันเสร็จสมบูรณ์โดยไม่มีปัญหาดังนั้นจึงส่งคืนรหัสออก 0 ไม่ทราบว่ารหัสทางออกที่ไม่ใช่ 0 จากคำสั่งไม่คาดคิดหรือควรทำอะไรบางอย่างกับมัน ดังนั้นวิธีการแก้ปัญหาค่อนข้างง่ายที่จะทำให้ su กลับรหัสทางออกของมันเป็นคำสั่งสุดท้าย มันทำเพื่อฉัน
su <user_x> -c '<bunch_of_commands>; exit $?'
ในกรณีที่ sudo ไม่เล่นดีคำสั่งทั้งหมดควรเป็นแบบนี้ (ฉันจะตรวจสอบเรื่องนี้ให้คุณ แต่ฉันไม่ได้ติดตั้ง sudo)
sudo 'su <user_x> -c \'<bunch_of_commands>; exit $?\'; exit$?'
คอยดูรังของราคาและให้แน่ใจว่า $? ไม่ได้ขยายดังนั้นจึงไม่มีเครื่องหมายคำพูดคู่