Chương trước bạn đã được hướng dẫn cách tạo vòng lặp và làm việc với chúng để thực hiện các nhiệm vụ khác nhau. Đôi khi bạn cần dừng một vòng lặp hoặc tiếp tục tiến hành quá trình lặp đi lặp lại của chúng.
Trong chương này, bạn sẽ học 2 lệnh được sử dụng trong điều khiển vòng lặp Shell:
- Lệnh break
- Lệnh continue
Vòng lặp vô hạn trong Unix/Linux
Tất cả vòng lặp có một vòng đời giới hạn và chúng kết thúc khi điều kiện là đúng hoặc sai phụ thuộc vào vòng lặp.
Một vòng lặp có thể tiếp tục tiến hành vĩnh viễn do chưa so khớp đúng với điều kiện yêu cầu. Một vòng lặp vô hạn là một vòng lặp mà chạy với số lần không đếm được.
Ví dụ
Dưới đây là ví dụ đơn giản về sử dụng vòng lặp while để hiển thị các số từ 0 đến 9.
#!/bin/sh a=10 while [ $a -ge 10 ] do echo $a a=`expr $a + 1` done
Vòng lặp này là vòng lặp vô hạn bởi vì a luôn luôn lớn hơn hoặc bằng 10 và nó sẽ không bao giờ nhỏ hơn 10.
Lệnh break trong Unix/Linux
Lệnh break được sử dụng để kết thúc tiến trình chạy của một vòng lặp đầy đủ, sau khi hoàn thành chạy tất cả các dòng trong code tới lệnh break này. Nó sau đó bước ra khỏi đoạn code sau khi kết thuc vòng lặp.
Cú pháp Lệnh break
Lệnh break sau được sử dụng để thoát khỏi một vòng lặp.
break
Lệnh break có thể được sử dụng để thoát khỏi một vòng lặp sử dụng định dạng sau:
break n
Tại đây n xác định vòng lặp thứ n được bao quanh để thoát ra khỏi từ đó:
Ví dụ
Ví dụ sau chỉ vòng lặp sau sẽ kết thúc ngay sau khi điều kiện trở thành 5:
#!/bin/sh a=0 while [ $a -lt 10 ] do echo $a if [ $a -eq 5 ] then break fi a=`expr $a + 1` done
Nó sẽ hiển thị kết quả sau:
0 1 2 3 4 5
Dưới đây là một ví dụ đơn giản của lồng vòng lặp. Script thoát ra khỏi cả hai vòng lặp nếu var1 bằng 2 và var2 bằng 0.
#!/bin/sh for var1 in 1 2 3 do for var2 in 0 5 do if [ $var1 -eq 2 -a $var2 -eq 0 ] then break 2 else echo "$var1 $var2" fi done done
Nó sẽ tạo kết quả sau. Trong vòng lặp bên trong bạn có một lệnh break với đối số 2. Nó chỉ rằng nếu điều kiện được thỏa mãn bạn nên thoát khỏi vòng lặp ở bên ngoài.
1 0 1 5
Lệnh continue trong Unix/Linux
Lệnh continue này tương tự như lệnh break, ngoại trừ việc nó gây ra sự lặp lại hiện tại của các vòng lặp để thoát ra, chứ không phải toàn bộ vòng lặp.
Lệnh này được sử dụng khi một lỗi đã xảy ra và bạn muốn cố để chạy sự lặp kế tiếp của vòng lặp.
Cú pháp Lệnh continue
continue
Giống với lệnh break, một đối số nguyên có thể được cung cấp cho lệnh continue để nhảy qua lệnh này từ vòng lặp được lồng.
continue n
Ở đây n xác định vòng lặp được bao thứ n để tiếp tục từ đó.
Ví dụ
Vòng lặp sau sử dụng lệnh continue mà trở lại từ lệnh continue và bắt đầu tiến trình lệnh kế tiếp.
#!/bin/sh NUMS="1 2 3 4 5 6 7" for NUM in $NUMS do Q=`expr $NUM % 2` if [ $Q -eq 0 ] then echo "Number is an even number!!" continue fi echo "Found odd number" done
Nó sẽ tạo ra kết quả sau:
Found odd number Number is an even number!! Found odd number Number is an even number!! Found odd number Number is an even number!! Found odd number