Tôi nhận ra đây là một bài viết cũ nhưng tôi thấy mình quay lại chủ đề này rất nhiều vì đây là một trong những kết quả tìm kiếm hàng đầu khi tìm kiếm chủ đề này. Tuy nhiên, sau đó tôi luôn bối rối hơn khi đến vì những thông tin mâu thuẫn. Cuối cùng, tôi luôn phải thực hiện các bài kiểm tra của riêng mình để tìm ra nó. Vì vậy, lần này tôi sẽ đăng những phát hiện của tôi.
Lối ra: Điều này sẽ "thoát" bối cảnh hiện đang chạy. Nếu bạn gọi lệnh này từ một tập lệnh, nó sẽ thoát khỏi tập lệnh. Nếu bạn gọi lệnh này từ shell, nó sẽ thoát khỏi shell.
Nếu một hàm gọi lệnh Thoát, nó sẽ thoát khỏi bối cảnh mà nó đang chạy. Vì vậy, nếu chức năng đó chỉ được gọi từ trong một tập lệnh đang chạy, nó sẽ thoát khỏi tập lệnh đó. Tuy nhiên, nếu tập lệnh của bạn chỉ khai báo hàm để nó có thể được sử dụng từ trình bao hiện tại và bạn chạy hàm đó từ trình bao, nó sẽ thoát khỏi trình bao vì trình bao là ngữ cảnh trong đó hàm chứa Exit
lệnh đang chạy.
Lưu ý: Theo mặc định nếu bạn nhấp chuột phải vào tập lệnh để chạy tập lệnh trong PowerShell, khi tập lệnh được chạy xong, PowerShell sẽ tự động đóng. Điều này không có gì để làm với Exit
lệnh hoặc bất cứ điều gì khác trong kịch bản của bạn. Đây chỉ là một hành vi PowerShell mặc định cho các tập lệnh đang được chạy bằng phương thức chạy tập lệnh cụ thể này. Điều này cũng đúng với các tệp bó và cửa sổ Dòng lệnh.
Trả về: Điều này sẽ trở về điểm gọi trước đó. Nếu bạn gọi lệnh này từ một tập lệnh (bên ngoài bất kỳ chức năng nào), nó sẽ trở về trình bao. Nếu bạn gọi lệnh này từ shell, nó sẽ trở về shell (là điểm gọi trước đó cho một lệnh được chạy từ shell). Nếu bạn gọi lệnh này từ một hàm, nó sẽ trở về nơi mà hàm được gọi từ đó.
Việc thực hiện bất kỳ lệnh nào sau điểm gọi mà nó được trả về sẽ tiếp tục từ điểm đó. Nếu một tập lệnh được gọi từ shell và nó chứa Return
lệnh bên ngoài bất kỳ hàm nào thì khi nó quay trở lại shell, sẽ không còn lệnh nào để chạy, do đó, Return
sử dụng theo cách này về cơ bản giống như Exit
.
Break: Điều này sẽ thoát ra khỏi các vòng lặp và trường hợp chuyển đổi. Nếu bạn gọi lệnh này trong khi không ở trong một vòng lặp hoặc trường hợp chuyển đổi, nó sẽ thoát ra khỏi tập lệnh. Nếu bạn gọi Break
bên trong một vòng lặp được lồng trong một vòng lặp, nó sẽ chỉ thoát ra khỏi vòng lặp mà nó được gọi.
Ngoài ra còn có một tính năng thú vị về Break
nơi bạn có thể tiền tố một vòng lặp với nhãn và sau đó bạn có thể thoát ra khỏi vòng lặp được gắn nhãn đó ngay cả khi Break
lệnh được gọi trong một số nhóm lồng trong vòng lặp được gắn nhãn đó.
While ($true) {
# Code here will run
:myLabel While ($true) {
# Code here will run
While ($true) {
# Code here will run
While ($true) {
# Code here will run
Break myLabel
# Code here will not run
}
# Code here will not run
}
# Code here will not run
}
# Code here will run
}