Điều khiển vòng lặp trong Unix/Linux



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:

  1. Lệnh break

  2. 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 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:

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

Loạt bài hướng dẫn học UNIX cơ bản và nâng cao của chúng tôi dựa trên nguồn tài liệu của: Tutorialspoint.com

Follow fanpage của team https://www.facebook.com/vietjackteam/ hoặc facebook cá nhân Nguyễn Thanh Tuyền https://www.facebook.com/tuyen.vietjack để tiếp tục theo dõi các loạt bài mới nhất về Java,C,C++,Javascript,HTML,Python,Database,Mobile.... mới nhất của chúng tôi.

Các bài học UNIX phổ biến khác tại VietJack: