×

Vòng lặp trong Bash for while until và select

Bash là một trong những ngôn ngữ lập trình và môi trường dòng lệnh phổ biến nhất trong hệ điều hành Linux. Một trong những tính năng mạnh mẽ của Bash chính là khả năng xử lý các vòng lặp, cho phép lập trình viên thực hiện các tác vụ lặp đi lặp lại một cách dễ dàng. Trong bài viết này, chúng ta sẽ tìm hiểu chi tiết về các loại vòng lặp trong Bash, bao gồm for, while, untilselect. Bài viết sẽ phân tích cú pháp, cách sử dụng và một số ví dụ thực tế giúp bạn áp dụng vào công việc lập trình của mình.

Vòng lặp for

Vòng lặp for trong Bash cho phép bạn lập qua một dãy số hoặc một danh sách các giá trị. Đây là một trong những cách đơn giản và hiệu quả nhất để lặp qua các phần tử trong một mảng hoặc một danh sách.

Cú pháp cơ bản

Cú pháp của vòng lặp for thường có dạng như sau:

for variable in list
do
    # Commands to be executed
done

Ví dụ

Dưới đây là một ví dụ minh họa cho việc sử dụng vòng lặp for trong Bash. Giả sử bạn muốn in ra các số từ 1 đến 5:

for i in 1 2 3 4 5
do
    echo "Number: $i"
done

Khi chạy đoạn mã này, kết quả sẽ như sau:

Number: 1
Number: 2
Number: 3
Number: 4
Number: 5

Vòng lặp for với dãy số

Ngoài việc sử dụng các giá trị tĩnh, bạn cũng có thể sử dụng vòng lặp for với dãy số bằng cách sử dụng cú pháp seq hoặc {}. Ví dụ:

for i in $(seq 1 5)
do
    echo "Number: $i"
done

Hoặc:

for i in {1..5}
do
    echo "Number: $i"
done

Vòng lặp while

Vòng lặp while cho phép thực hiện các lệnh cho đến khi điều kiện xác định là không còn đúng. Điều này rất hữu ích khi bạn không biết trước số lần lặp.

Cú pháp cơ bản

Cú pháp của vòng lặp while như sau:

while [ condition ]
do
    # Commands to be executed
done

Ví dụ

Dưới đây là một ví dụ minh họa cho vòng lặp while. Trong ví dụ này, chúng ta sẽ in ra các số từ 1 đến 5:

i=1
while [ $i -le 5 ]
do
    echo "Number: $i"
    ((i++))
done

Kết quả của đoạn mã trên sẽ giống như sau:

Number: 1
Number: 2
Number: 3
Number: 4
Number: 5

Vòng lặp until

Tương tự như vòng lặp while, nhưng vòng lặp until thực hiện các lệnh cho đến khi điều kiện xác định là đúng. Điều này thường ít được sử dụng hơn, nhưng vẫn rất hữu ích trong một số trường hợp nhất định.

Cú pháp cơ bản

Cú pháp của vòng lặp until như sau:

until [ condition ]
do
    # Commands to be executed
done

Ví dụ

Dưới đây là ví dụ sử dụng vòng lặp until. Chúng ta sẽ in ra các số từ 1 đến 5 giống như trước nhưng lần này sẽ sử dụng until:

i=1
until [ $i -gt 5 ]
do
    echo "Number: $i"
    ((i++))
done

Kết quả sẽ giống như sau:

Number: 1
Number: 2
Number: 3
Number: 4
Number: 5

Vòng lặp select

Vòng lặp select là một cách hữu ích để tạo ra các menu lựa chọn từ đó người dùng có thể chọn một giá trị. Vòng lặp select là một cách tuyệt vời để tương tác với người dùng trong các script shell.

Cú pháp cơ bản

Cú pháp của vòng lặp select như sau:

select variable in list
do
    # Commands to be executed
done

Ví dụ

Dưới đây là một ví dụ minh họa cho vòng lặp select. Chúng ta sẽ tạo một menu đơn giản cho người dùng chọn một loại trái cây:

PS3="Please select a fruit: "
select fruit in Apple Banana Cherry Quit
do
    case $fruit in
        Apple)
            echo "You selected Apple."
            ;;
        Banana)
            echo "You selected Banana."
            ;;
        Cherry)
            echo "You selected Cherry."
            ;;
        Quit)
            echo "Exiting."
            break
            ;;
        *)
            echo "Invalid selection."
            ;;
    esac
done

Khi bạn chạy đoạn mã này, bạn sẽ thấy một menu cho phép bạn chọn. Nếu bạn chọn một trong các trái cây, nó sẽ in ra lựa chọn tương ứng. Chọn "Quit" sẽ thoát khỏi vòng lặp.

Kết luận

Các vòng lặp trong Bash không chỉ đơn giản mà còn rất mạnh mẽ, giúp bạn tự động hóa các tác vụ lặp đi lặp lại trong script của mình. Từ việc xử lý danh sách các giá trị đến việc tạo tương tác với người dùng qua select, các vòng lặp này cung cấp cho bạn khả năng linh hoạt trong việc xây dựng các script phức tạp hơn. Hy vọng rằng bài viết này đã cung cấp cho bạn cái nhìn sâu sắc về các kiểu vòng lặp trong Bash và cách áp dụng chúng.

Comments