Bash: Chạy một thực thi cho một trạng thái thoát tốt


32

Tôi muốn chạy một tệp thực thi trong Linux và bất kể trạng thái thoát mà nó trả về, tôi muốn trả về trạng thái thoát tốt. (tức là không có lỗi.)

(Điều này là do tôi đang sử dụng sh -exvà tôi muốn tập lệnh tiếp tục chạy ngay cả khi một lệnh (cụ thể) không thành công.)

Câu trả lời:


47

Hãy thử xem:

command || true

Từ man bash:

Shell không thoát nếu lệnh bị lỗi là một phần của danh sách lệnh ngay sau một từ khóa hoặc cho đến khi từ khóa, một phần của kiểm tra theo các từ dành riêng if hoặc elif, một phần của bất kỳ lệnh nào được thực thi trong danh sách && hoặc except ngoại trừ lệnh theo lệnh cuối cùng && hoặc ⎪⎪, bất kỳ lệnh nào trong đường ống ngoại trừ lệnh cuối cùng hoặc nếu giá trị trả về của lệnh đang được đảo ngược với !.


cũng là một thứ tốt :)
voretaq7

1

Hãy thử (executable ; exit 0)hoặc thay thế gói nó trong một tập lệnh shell luôn thoát 0.


1
Điều này hoạt động tốt trong hầu hết các trường hợp, nhưng nó thiết lập một mạng con, vì vậy, ví dụ, nếu (cd foo; exit 0)thành công, bạn sẽ không kết thúc trong "foo" sau đó vì cwd của bạn được trả về cho bạn trước đó. Tuy nhiên, cd foo || truesẽ khiến bạn rơi vào "foo" nếu thành công.
Tạm dừng cho đến khi có thông báo mới.

điểm tốt - nếu quy trình của bạn có thêm tác dụng phụ (đặt biến môi trường, thay đổi thư mục, v.v.) thì điều này sẽ không hiệu quả.
voretaq7
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.