Unix / Linux - Vòng Lặp Shell: Hướng Dẫn Cho Người Mới Bắt Đầu

Xin chào, những người học lập trình! Hôm nay, chúng ta sẽ cùng nhau khám phá thế giới đầy thú vị của các vòng lặp shell trong Unix và Linux. Đừng lo lắng nếu bạn chưa từng viết một dòng mã trước đây - tôi sẽ hướng dẫn bạn từng bước, giống như tôi đã làm cho hàng trăm sinh viên trong những năm dạy học của mình. Hãy cùng bắt đầu!

Unix / Linux - Shell Loops

Vòng Lặp Shell Là Gì?

Hãy tưởng tượng bạn đang tham gia một buổi tiệc và bạn cần chào đón mỗi vị khách. Thay vì viết một tin nhắn "Xin chào" riêng cho từng người, chẳng phải thật tuyệt nếu bạn có thể nói, "Lặp lại 'Xin chào' cho mỗi khách"? Đó chính xác là điều mà các vòng lặp trong lập trình làm - chúng cho phép chúng ta lặp lại một bộ hướng dẫn nhiều lần.

Trong lập trình shell, vòng lặp vô cùng hữu ích cho việc tự động hóa các nhiệm vụ lặp lại. Chúng có thể giúp bạn tiết kiệm thời gian và giảm thiểu nguy cơ lỗi có thể xảy ra nếu bạn phải tự mình lặp lại các lệnh.

Các Loại Vòng Lặp Shell

Trong lập trình shell script Unix/Linux, chúng ta chủ yếu làm việc với ba loại vòng lặp:

Loại Vòng Lặp Mô Tả Trường Hợp Sử Dụng
for loop Lặp qua một danh sách các mục Khi bạn biết chính xác số lần lặp
while loop Tiếp tục miễn là điều kiện là đúng Khi bạn không biết cần bao nhiêu lần lặp
until loop Tiếp tục cho đến khi điều kiện trở thành đúng Tương tự như while, nhưng với logic ngược

Hãy cùng khám phá chi tiết từng loại vòng lặp này.

Vòng Lặp 'for'

Vòng lặp 'for' giống như một người đưa thư chăm chỉ, người đó mang tin nhắn đến từng ngôi nhà trên một con đường. Nó đi qua danh sách các mục và thực hiện một hành động cho từng mục.

Dưới đây là cú pháp cơ bản:

for variable in list
do
commands
done

Hãy xem một ví dụ đơn giản:

#!/bin/bash
for fruit in apple banana orange
do
echo "I love $fruit"
done

Nếu bạn chạy script này, bạn sẽ thấy:

I love apple
I love banana
I love orange

Trong ví dụ này, người "thuộc thư" (vòng lặp) của chúng ta đang mang tin nhắn "I love" đến từng "ngôi nhà" (quả) trên "con đường" (danh sách quả).

Vòng Lặp 'while'

Vòng lặp 'while' giống như một người bán hàng kiên nhẫn, người đó tiếp tục gõ cửa miễn là bạn chưa mua sản phẩm của họ. Nó tiếp tục thực hiện một bộ lệnh miễn là một điều kiện là đúng.

Dưới đây là cú pháp cơ bản:

while [ condition ]
do
commands
done

Hãy xem một ví dụ:

#!/bin/bash
count=1
while [ $count -le 5 ]
do
echo "Count is: $count"
count=$((count + 1))
done

Script này sẽ выводить:

Count is: 1
Count is: 2
Count is: 3
Count is: 4
Count is: 5

Trong trường hợp này, người "bán hàng" (vòng lặp) tiếp tục "gõ cửa" (in số đếm) cho đến khi số đếm đạt 5.

Vòng Lặp 'until'

Vòng lặp 'until' giống như chờ đợi một辆 bus. Bạn tiếp tục chờ đợi cho đến khi bus đến. Nó tiếp tục thực hiện các lệnh cho đến khi một điều kiện trở thành đúng.

Dưới đây là cú pháp cơ bản:

until [ condition ]
do
commands
done

Hãy xem một ví dụ:

#!/bin/bash
count=1
until [ $count -gt 5 ]
do
echo "Count is: $count"
count=$((count + 1))
done

Script này sẽ sản xuất cùng output như ví dụ của vòng lặp 'while'. Sự khác biệt là ở logic: chúng ta tiếp tục cho đến khi số đếm lớn hơn 5, thay vì trong khi nó nhỏ hơn hoặc bằng 5.

Lồng Vòng Lặp

Giống như bạn có thể có một phòng trong phòng (hãy tưởng tượng một tủ quần áo thông minh), bạn cũng có thể có một vòng lặp trong vòng lặp. Điều này được gọi là lồng vòng lặp.

Dưới đây là một ví dụ về vòng lặp 'for' lồng:

#!/bin/bash
for i in 1 2 3
do
echo "Outer loop: $i"
for j in a b c
do
echo "  Inner loop: $j"
done
done

Script này sẽ output:

Outer loop: 1
Inner loop: a
Inner loop: b
Inner loop: c
Outer loop: 2
Inner loop: a
Inner loop: b
Inner loop: c
Outer loop: 3
Inner loop: a
Inner loop: b
Inner loop: c

Hãy tưởng tượng điều này như một tòa nhà nhiều tầng. Vòng lặp ngoài đi qua từng tầng, và cho mỗi tầng, vòng lặp trong đi qua từng căn hộ.

Lồng Vòng Lặp 'while'

Chúng ta cũng có thể lồng các vòng lặp 'while'. Dưới đây là một ví dụ:

#!/bin/bash
i=1
while [ $i -le 3 ]
do
echo "Outer loop: $i"
j=1
while [ $j -le 3 ]
do
echo "  Inner loop: $j"
j=$((j + 1))
done
i=$((i + 1))
done

Script này sẽ sản xuất output tương tự như ví dụ của chúng ta về vòng lặp 'for' lồng.

Kết Luận

Chúc mừng! Bạn đã chính thức bước vào thế giới của các vòng lặp shell. Nhớ rằng, vòng lặp giống như những robot hữu ích có thể lặp lại nhiệm vụ cho bạn. Vòng lặp 'for' rất tốt khi bạn biết chính xác bạn muốn lặp lại bao nhiêu lần. Các vòng lặp 'while' và 'until' hoàn hảo khi bạn không chắc chắn và cần tiếp tục cho đến khi một điều kiện được thỏa mãn.

Khi bạn tiếp tục hành trình lập trình của mình, bạn sẽ thấy vòng lặp là những công cụ vô cùng quý giá trong bộ công cụ lập trình của bạn. Chúng sẽ giúp bạn tự động hóa các nhiệm vụ lặp lại, xử lý lượng lớn dữ liệu và tạo ra các script hiệu quả và thanh lịch hơn.

Tiếp tục thực hành, và sớm bạn sẽ thành thạo việc lặp lại! Nhớ rằng, mỗi nhà lập trình giỏi đều bắt đầu từ nơi bạn đang đứng hiện tại. Chúc bạn may mắn và vui vẻ lập trình!

Credits: Image by storyset