2013-01-21 30 views
5

Trong shell script của tôi, tôi chạy lệnh này:Chạy một kịch bản Python trong shell script - Kiểm tra tình trạng

python script.py 

tôi đã tự hỏi, như một câu hỏi hai phần:

  1. Làm thế nào tôi có thể lập trình kịch bản python của tôi để vượt qua một trạng thái trở lại kịch bản lệnh shell chạy nó tùy thuộc vào những gì xảy ra trong kịch bản lệnh python. Ví dụ, nếu có điều gì đó sai trong kịch bản python thì nó sẽ thoát với một mã số 1 được gửi trở lại trình bao.

  2. Làm cách nào để tôi có thể lấy tập lệnh shell để đọc mã thoát của python và thoát cho một lỗi? Ví dụ, một mã trạng thái của bất cứ điều gì nhưng 0 sau đó thoát.

+0

Đối # 2: http://stackoverflow.com/questions/90418/exit-shell-script-based-on-process-exit-code?rq=1 – acjay

Trả lời

13

Trước tiên, bạn có thể chuyển mã thoát mong muốn làm đối số cho sys.exit trong tập lệnh python của bạn.

Thứ hai, mã thoát của quy trình được thoát gần đây nhất có thể được tìm thấy trong thông số bash$?. Tuy nhiên, bạn có thể không cần phải kiểm tra xem nó một cách rõ ràng:

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

Để kiểm tra mã lối ra một cách rõ ràng, bạn cần phải cung cấp một biểu thức điều kiện để các if tuyên bố:

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

Tôi có cần một dòng trước khi mã của bạn nói python script.py để chạy nó không? – Jimmy

+0

Hoặc thay vào đó, mã của bạn cũng có chạy tập lệnh không? – Jimmy

+0

Danh sách các lệnh đưa ra trong câu lệnh 'if' được thực hiện, và mã thoát của nó xác định nhánh nào của' if' được thực hiện tiếp theo. – chepner

Các vấn đề liên quan