Vòng lặp cho phép bạn chạy một hoặc nhiều lệnh nhiều lần cho đến khi một điều kiện nhất định được đáp ứng. Tuy nhiên, đôi khi bạn có thể cần phải thay đổi luồng của vòng lặp và kết thúc vòng lặp hoặc chỉ lặp lại hiện tại.
Trong Bash, câu lệnh break
và các continue
cho phép bạn kiểm soát việc thực thi vòng lặp.
Break
Câu lệnh break
kết thúc vòng lặp hiện tại và chuyển quyền điều khiển chương trình cho lệnh theo sau vòng lặp kết thúc. Nó được sử dụng để thoát khỏi một for
, while
, until
, hoặc vòng lặp select
. Cú pháp của break
câu lệnh có dạng sau:
break [n]
[n]
là một đối số tùy chọn và phải lớn hơn hoặc bằng 1. Khi [n]
được cung cấp, vòng lặp bao quanh thứ n sẽ được thoát. break 1
tương đương với break
.
Để hiểu rõ hơn về cách sử dụng câu lệnh break
, chúng ta hãy xem các ví dụ sau.
Trong tập lệnh bên dưới, việc thực thi while
sẽ bị gián đoạn khi mục được lặp hiện tại bằng 2
:
i=0 while [[ $i -lt 5 ]] do echo "Number: $i" ((i++)) if [[ $i -eq 2 ]]; then break fi done echo 'All Done!'
Output:
Number: 0 Number: 1 All Done!
Đây là một ví dụ về việc sử dụng câu lệnh break
bên trong các for
lồng nhau .
Khi đối số [n]
không được đưa ra, break
kết thúc vòng lặp bao bọc trong cùng. Các vòng bên ngoài không bị kết thúc:
for i in {1..3}; do for j in {1..3}; do if [[ $j -eq 2 ]]; then break fi echo "j: $j" done echo "i: $i" done echo 'All Done!'
Output:
j: 1 i: 1 j: 1 i: 2 j: 1 i: 3 All Done!
Nếu bạn muốn thoát khỏi vòng lặp bên ngoài, hãy sử dụng break 2
. Đối số 2
yêu cầu break
kết thúc vòng lặp bao quanh thứ hai:
for i in {1..3}; do for j in {1..3}; do if [[ $j -eq 2 ]]; then break 2 fi echo "j: $j" done echo "i: $i" done echo 'All Done!'
Output:
j: 1 All Done!
Bash continue
Câu lệnh continue
bỏ qua các lệnh còn lại bên trong phần thân của vòng lặp đi kèm cho lần lặp hiện tại và chuyển quyền điều khiển chương trình cho lần lặp tiếp theo của vòng lặp.
Cú pháp của câu lệnh continue
như sau:
continue [n]
Đối ố [n]
là tùy chọn và có thể lớn hơn hoặc bằng 1. Khi [n]
được cung cấp, vòng lặp bao quanh thứ n được tiếp tục. continue 1
tương đương với continue
.
Trong ví dụ dưới đây, khi mục được lặp hiện tại bằng với 2
,câu lệnh continue
sẽ khiến việc thực thi quay trở lại phần đầu của vòng lặp và tiếp tục với lần lặp tiếp theo.
i=0 while [[ $i -lt 5 ]]; do ((i++)) if [[ "$i" == '2' ]]; then continue fi echo "Number: $i" done echo 'All Done!'
Output:
Number: 1 Number: 3 Number: 4 Number: 5 All Done!
Những con số in kịch bản sau đây từ 1
thông qua 50
đó là chia hết cho 9
.
Nếu một số không chia hết 9
, câu lệnh continue
sẽ bỏ qua echo
lệnh và chuyển điều khiển cho lần lặp tiếp theo của vòng lặp.
for i in {1..50}; do if [[ $(( $i % 9 )) -ne 0 ]]; then continue fi echo "Divisible by 9: $i" done
Output:
Divisible by 9: 9 Divisible by 9: 18 Divisible by 9: 27 Divisible by 9: 36 Divisible by 9: 45
Phần kết luận
Vòng lặp là một trong những khái niệm cơ bản của ngôn ngữ lập trình. Trong các ngôn ngữ kịch bản như Bash, các vòng lặp rất hữu ích để tự động hóa các tác vụ lặp đi lặp lại.
Câu lệnh break
được sử dụng để thoát khỏi vòng lặp hiện tại. Câu lệnh continue
được sử dụng để thoát khỏi vòng lặp hiện tại của một vòng lặp và bắt đầu lặp lại tiếp theo.
Nếu bạn có bất kỳ câu hỏi hoặc phản hồi nào, vui lòng để lại bình luận.