Lệnh dựng sẵn exit
thoát khỏi trình bao (từ tham chiếu của Bash ):
exit [n]
Thoát khỏi shell, trả lại trạng thái n cho cha của shell. Nếu n bị bỏ qua, trạng thái thoát là trạng thái của lệnh cuối cùng được thực thi. Bất kỳ bẫy nào trên EXIT đều được thực thi trước khi shell kết thúc.
Chạy đến cuối tệp cũng thoát, trả về mã trả về của lệnh cuối cùng, vì vậy, cuối cùng exit 0
sẽ làm cho đoạn mã thoát với trạng thái thành công bất kể trạng thái thoát của các lệnh trước đó. (Nghĩa là, giả sử tập lệnh đi đến cuối cùng exit
.) Ở cuối tập lệnh, bạn cũng có thể sử dụng true
hoặc :
để lấy mã thoát bằng không.
Tất nhiên thường xuyên hơn bạn sẽ sử dụng exit
từ bên trong một if
để kết thúc tập lệnh ở giữa.
Chúng nên in 1 ( $?
chứa mã thoát được trả về bởi lệnh trước đó):
sh -c "false" ; echo $?
sh -c "false; exit" ; echo $?
Trong khi điều này sẽ in 0:
sh -c "false; exit 0" ; echo $?
Tôi không chắc liệu khái niệm kịch bản có "thất bại" khi thực hiện một exit
ý nghĩa hay không, vì một số lệnh được chạy bởi kịch bản sẽ thất bại, nhưng chính kịch bản đã thành công. Tùy thuộc vào tác giả của kịch bản để quyết định đâu là thành công và điều gì không.
Ngoài ra, phạm vi tiêu chuẩn cho mã thoát là 0..255. Các mã trên 127 được sử dụng bởi shell để chỉ ra một quá trình được kết thúc bởi tín hiệu, nhưng chúng có thể được trả về theo cách thông thường. Cuộc wait
gọi hệ thống thực sự trả về một giá trị rộng hơn, phần còn lại chứa các bit trạng thái được thiết lập bởi hệ điều hành.
exit 0
, nó sẽ thoát với mã thoát là 0 bất kể điều gì xảy ra trong tập lệnh.