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 forwhileuntil , 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.

0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments