2012-08-23 8 views
5

Tôi có một tập lệnh trong đó tôi kiểm tra tỉ mỉ các mã trả lại cho các điều kiện lỗi, để tôi có thể hủy bỏ sớm trong trường hợp lỗi. Một bước của kịch bản lệnh này liên quan đến việc chạy một lệnh với quyền root trên một hộp khác, thông qua ssh và sudo.Ghi mã thoát khỏi quy trình chạy giả

xem xét:

ssh $HOST sudo $CMD 
echo $? 

ssh qua mã trở lại tốt, nhưng ngay cả khi $ CMD trả về một mã thoát khác không, sudo vẫn trả về 0 sau khi chạy lệnh.

Làm cách nào để nắm bắt mã trả về là $ CMD? Tôi là một phần của nó được chuyển trở lại như mã trả về của ssh, nhưng nếu có một phương pháp đơn giản khác mà không thể bị nhầm lẫn bởi đầu ra của $ CMD, tôi là tất cả các tai.

Trả lời

4

Khi nó quay ra, sudo chuyển mã trả lại chính xác. Trường hợp thử nghiệm của tôi rất có thể đã ghi đè $? với việc thực hiện tiếp theo hoặc thử nghiệm có điều kiện. Tôi thường sử dụng một biến được đặt tên để bảo tồn $? để tránh những thứ như vậy, nhưng có bạn.

+0

Tương tự ở đây - tôi đã lặp lại kết quả, vì vậy mặc dù ssh đã chuyển mã trạng thái chính xác, nhưng echo đã trả về 0. –