Liên hệProfile
Danh mục

Mục Lục

    Hướng dẫn cách sử dụng vòng lặp for trong Bash qua ví dụ cụ thể

    Nguyễn Hưng

    Ngày đăng:

    09/02/2026

    Cập nhật lần cuối:

    09/02/2026

    Lượt xem:
    Chia sẻ
    Đánh giá
    5/5 - (1 bình chọn)

    Nguyễn Hưng

    Lượt xem:
    Ngày đăng:

    09/02/2026

    Cập nhật lần cuối:

    09/02/2026

    Mục lục

    Vòng lặp For trong Bash là một cấu trúc điều khiển cho phép người dùng lặp lại một khối lệnh nhất định với một danh sách các giá trị được xác định trước. Công cụ này thường được sử dụng trong lập trình Shell Script để xử lý hàng loạt các tệp tin, chuỗi ký tự hoặc các dãy số một cách tự động. Trong bài viết này, mình sẽ hướng dẫn bạn chi tiết các cú pháp từ cơ bản đến nâng cao của vòng lặp for thông qua các ví dụ thực tế.

    Những điểm chính

    • Lợi ích khi sử dụng vòng lặp for: Hiểu rõ các lợi ích chính như tự động hóa, xử lý hàng loạt, giảm thiểu lỗi và tối ưu hóa mã nguồn.
    • Các cú pháp sử dụng: Nắm vững các cú pháp for khác nhau, từ lặp qua danh sách, dãy số, đến cú pháp kiểu C và lặp qua mảng.
    • Ứng dụng thực tế: Học được cách áp dụng vòng lặp for vào các kịch bản thực tế như đổi tên file hàng loạt và kiểm tra trạng thái kết nối mạng.
    • Những lưu ý khi sử dụng: Nắm được các lưu ý quan trọng để sử dụng vòng lặp for một cách an toàn và hiệu quả, tránh các lỗi phổ biến như xử lý sai khoảng trắng.
    • Giải đáp thắc mắc (FAQ): Có được câu trả lời cho các vấn đề nâng cao như khi nào nên dùng for thay vì while, cách tránh treo máy và các phương pháp tối ưu hiệu năng.

    Những lợi ích khi sử dụng vòng lặp for trong Bash

    Sử dụng vòng lặp for trong Bash Script mang lại những lợi ích thiết thực giúp tối ưu hóa quy trình quản trị hệ thống:

    • Tự động hóa các tác vụ lặp lại: Vòng lặp for cho phép thực thi cùng một chuỗi hành động trên nhiều đối tượng mà không cần can thiệp thủ công, giúp tiết kiệm tối đa thời gian và công sức.
    • Xử lý dữ liệu hàng loạt: Vòng lặp giải quyết hiệu quả các bài toán thao tác trên danh sách lớn, ví dụ như đổi tên hàng loạt file, sao lưu nhiều cơ sở dữ liệu hoặc cập nhật phần mềm cho một dải địa chỉ IP cùng lúc.
    • Giảm thiểu lỗi: Việc gõ đi gõ lại một câu lệnh nhiều lần rất dễ dẫn đến sai sót cú pháp, khi đó việc sử dụng vòng lặp sẽ đảm bảo độ chính xác tuyệt đối và tính nhất quán logic cho mọi lần thực thi.
    • Tối ưu hóa mã nguồn: Thay vì viết nhiều dòng lệnh giống nhau, bạn chỉ cần gói gọn trong một cấu trúc for ngắn gọn, giúp script trở nên dễ đọc, dễ hiểu và dễ bảo trì hơn.
    • Khả năng mở rộng linh hoạt: Logic của vòng lặp for không thay đổi dù danh sách đầu vào có nhiều hay ít phần tử, điều này giúp script hoạt động ổn định bất kể quy mô dữ liệu thay đổi.
    Những lợi ích khi sử dụng vòng lặp for trong Bash
    Những lợi ích khi sử dụng vòng lặp for trong Bash

    Cú pháp lặp qua danh sách

    Đây là dạng cơ bản nhất, dùng để lặp qua một tập hợp các từ hoặc chuỗi. Với cú pháp lặp qua danh sách, vòng lặp sẽ duyệt qua từng phần tử được liệt kê:

    for var in item1 item2 item3
    do
      command1
      command2
    done

    Giải thích thành phần:

    • var: Tên biến dùng để lưu giá trị của phần tử trong mỗi lần lặp.
    • item1 item2...: Danh sách các giá trị đầu vào (có thể là chuỗi, số, hoặc file).
    • do ... done: Khối lệnh sẽ được thực thi.

    Ví dụ minh họa:

    for fruit in apple banana mango
    do
      echo "I like $fruit"
    done

    Khi đó, kết quả sẽ hiển thị như sau:

    Kết quả hiển thị khi lặp qua danh sách
    Kết quả hiển thị khi lặp qua danh sách

    Cú pháp lặp qua dãy số

    Bash hỗ trợ tạo dãy số nhanh chóng bằng cơ chế mở rộng dấu ngoặc nhọn { }. Để lặp từ số bắt đầu đến số kết thúc, bạn thực thi lệnh sau:

    for i in {1..5}
    do
        echo "Number $i"
    done
    Tạo dãy số nhanh chóng
    Tạo dãy số nhanh chóng

    Ngoài ra, bạn cũng có thể lặp với bước nhảy. Cụ thể, cú pháp {start..end..step} cho phép bạn xác định khoảng cách giữa các số.

    for i in {1..10..2}
    do
      echo "Step $i"
    done

    Ví dụ trên sẽ in ra các số lẻ: 1, 3, 5, 7, 9. Khi đó, kết quả sẽ hiển thị như sau:

    Kết quả hiển thị khi lặp với bước nhảy
    Kết quả hiển thị khi lặp với bước nhảy

    Cú pháp sử dụng lệnh seq

    Lệnh seq là một công cụ rất hữu ích khi bạn cần lặp với các tham số linh hoạt hoặc bước nhảy. Việc kết hợp thêm lệnh này phù hợp khi các điểm bắt đầu/kết thúc được lưu trong biến:

    for i in $(seq 1 5)
    do
      echo "Value: $i"
    done
    Dùng lệnh sed để sinh ra dãy số
    Dùng lệnh sed để sinh ra dãy số

    Cú pháp kiểu C

    Nếu bạn quen thuộc với các ngôn ngữ lập trình như C, C++, Java hay PHP, Bash cũng hỗ trợ cú pháp lặp với 3 biểu thức: Khởi tạo, điều kiện dừng và tăng giảm. Cú pháp thực thi như sau:

    for (( i=1; i<=5; i++ ))
    do
      echo "C-style $i"
    done
    Cú pháp kiểu C
    Cú pháp kiểu C

    Vòng lặp với mảng

    Cú pháp này được sử dụng khi bạn cần xử lý các phần tử được lưu trữ trong một mảng. Đầu tiên, bạn tạo file test.sh với nội dung sau:

    #!/bin/bash
    
    echo "== Duyệt mảng theo giá trị: =="
    my_array=("apple" "banana" "cherry" "date")
    for item in "${my_array[@]}"
    do
      echo "Fruit: $item"
    done
    
    echo "==  Duyệt mảng theo chỉ số: =="
    for (( i=0; i<${#my_array[@]}; i++ ))
    do
      echo "Index $i: ${my_array[$i]}"
    done

    Ý nghĩa của các cú pháp mảng là:

    • ${my_array[@]}: Trả về tất cả các phần tử (giá trị) trong mảng.
    • ${#my_array[@]}: Trả về tổng số lượng phần tử (độ dài) của mảng.
    • ${my_array[$i]}: Truy xuất giá trị của phần tử tại vị trí index $i.

    Kết quả sẽ hiển thị như sau:

    Kết quả hiển thị vòng lặp trong mảng
    Kết quả hiển thị vòng lặp trong mảng

    Một số ứng dụng thực tế khi sử dụng vòng lặp for trong Bash

    1. Đổi tên file hàng loạt

    Vòng lặp For giúp người dùng thay đổi phần mở rộng hoặc thêm tiền tố/hậu tố cho hàng loạt tệp tin trong thư mục một cách nhanh chóng. Ví dụ trong trường hợp dưới đây, vòng lặp sẽ duyệt qua tất cả các file .txt trong thư mục hiện tại và đổi đuôi mở rộng của chúng thành .bak (Backup).

    for file in *.txt
    do
      mv "$file" "${file%.txt}.bak"
    done

    Trong đó, ${file%.txt} là cú pháp cắt chuỗi trong Bash, giúp loại bỏ phần đuôi .txt trước khi nối thêm .bak.

    Đổi tên file hàng loạt
    Đổi tên file hàng loạt

    2. Kiểm tra trạng thái kết nối mạng

    Bạn có thể sử dụng vòng lặp để kiểm tra xem một danh sách các địa chỉ IP hoặc máy chủ có đang hoạt động hay không. Ví dụ: Ping thử nghiệm danh sách các IP.

    for ip in 192.168.1.1 192.168.1.2 192.168.1.3
    do
      ping -c 1 $ip && echo "$ip is online" || echo "$ip is offline"
    done

    Trong đó:

    • -c 1: Chỉ gửi 1 gói tin ping.
    • &&: Thực hiện lệnh echo online nếu ping thành công.
    • ||: Thực hiện lệnh echo offline nếu ping thất bại.
    Kiểm tra trạng thái kết nối mạng
    Kiểm tra trạng thái kết nối mạng

    Những lưu ý khi sử dụng vòng lặp for trong Bash

    • Luôn dùng dấu ngoặc kép (“$var”): Bạn cần bọc tên biến trong dấu ngoặc kép để xử lý đúng các tên file hoặc chuỗi chứa khoảng trắng, tránh việc Bash tách sai phần tử.
    • Cẩn trọng với Wildcard (*): Nếu không tìm thấy file khớp, Bash sẽ trả về nguyên văn chuỗi “*.txt” thay vì danh sách rỗng. Bạn hãy kiểm tra sự tồn tại của file trước khi xử lý hoặc dùng tùy chọn shopt -s nullglob.
    • Không dùng for để đọc dòng văn bản: Mặc định, vòng lặp for phân tách các phần tử dựa trên dấu cách, tab và xuống dòng nhưng nếu bạn cố gắng lặp qua các dòng của một file văn bản bằng for thì có thể sẽ bị tách sai nếu dòng đó chứa khoảng trắng.
    • Giới hạn về hiệu năng: Vòng lặp for của Bash có tốc độ xử lý chậm hơn đáng kể so với các công cụ chuyên dụng như awk, sed hay find -exec. Nếu cần xử lý lượng dữ liệu cực lớn, bạn hãy cân nhắc dùng các công cụ thay thế hoặc ngôn ngữ khác.
    • Phạm vi biến toàn cục: Biến chạy trong vòng lặp là biến toàn cục. Sau khi vòng lặp kết thúc, biến i vẫn giữ giá trị của lần lặp cuối cùng nên bạn cần lưu ý điều này để tránh xung đột biến nếu tiếp tục viết code phía sau.
    Những lưu ý khi sử dụng vòng lặp for trong Bash
    Những lưu ý khi sử dụng vòng lặp for trong Bash

    Câu hỏi thường gặp

    Khi nào nên dùng for, khi nào nên dùng while hoặc until trong Bash?

    Nên ưu tiên dùng for khi bạn có sẵn danh sách hữu hạn. Trong khi đó, while và until phù hợp hơn cho các tác vụ đọc stream dữ liệu, đọc file từng dòng hoặc chờ một điều kiện hệ thống thay đổi.

    Làm sao tránh treo máy khi vòng lặp for xử lý quá nhiều phần tử?

    Bạn có thể giới hạn số phần tử mỗi lần xử lý, thêm sleep nhỏ trong mỗi vòng lặp hoặc kết hợp với các công cụ như xargs/parallel để xử lý song song thay vì dồn mọi thứ vào một vòng lặp đơn luồng.​

    Làm thế nào tối ưu hiệu năng vòng lặp for trong các script quản trị hệ thống?

    Một số cách tối ưu hiệu năng vòng lặp for gồm:
    – Hạn chế gọi lệnh external không cần thiết trong thân vòng lặp.
    – Tận dụng built-in của Bash.
    – Gom nhiều thao tác vào một lệnh.
    – Dùng break/continue để giảm số lần lặp.
    – Chỉ dùng for khi số lượng phần tử thực sự cần thiết phải duyệt bằng shell.

    Vòng lặp for trong Bash đóng vai trò quan trọng trong quy trình việc tự động hóa trên Linux. Từ việc xử lý văn bản đơn giản đến các tác vụ quản trị hệ thống phức tạp, việc thành thạo các biến thể của vòng lặp for sẽ giúp bạn viết các đoạn script tối ưu, dễ bảo trì và tiết kiệm đáng kể thời gian vận hành. Chúc bạn thao tác thành công và mời bạn tham khảo thêm các bài viết về chủ đề Linux của mình ngay sau đây:

    5/5 - (1 bình chọn)
    Nguyễn Hưng
    Tôi là Nguyễn Hưng hay còn được biết đến với nickname là Bo, chuyên gia về hệ thống, mạng và bảo mật. Tôi là Co-Founder của Vietnix và Co-Founder của dự án Chống Lừa Đảo.
    0 0 đánh giá
    Đánh giá bài viết
    Theo dõi
    Thông báo của
    guest
    0 Góp ý
    Cũ nhất
    Mới nhất Được bỏ phiếu nhiều nhất
    Phản hồi nội tuyến
    Xem tất cả bình luận

    BÀI VIẾT LIÊN QUAN

    Dùng lệnh chmod trên Linux để quản lý quyền truy cập file và thư mục hiệu quả
    Dùng lệnh chmod trên Linux để quản lý quyền truy cập file và thư mục hiệu quả

    Lệnh chmod trong Linux là công cụ dùng để thiết lập và thay đổi quyền truy cập đối với file và thư mục trong hệ thống. Việc cấu hình quyền đúng cách giúp kiểm soát truy cập, tăng cường bảo mật và hạn chế các lỗi phát sinh khi vận hành ứng dụng. Trong bài…

    10/02/2026

    Sử dụng lệnh passwd trên Linux quản lý mật khẩu người dùng an toàn và hiệu quả
    Sử dụng lệnh passwd trên Linux quản lý mật khẩu người dùng an toàn và hiệu quả

    Lệnh passwd trong Linux là công cụ dòng lệnh dùng để thiết lập, thay đổi và quản lý mật khẩu của tài khoản người dùng trên hệ thống. Việc sử dụng passwd đúng cách giúp tăng cường bảo mật, kiểm soát quyền truy cập và hạn chế rủi ro liên quan đến tài khoản người…

    10/02/2026

    Lệnh zcat trong Linux là gì? Cách sử dụng lệnh zcat kèm ví dụ dễ hiểu
    Lệnh zcat trong Linux là gì? Cách sử dụng lệnh zcat kèm ví dụ dễ hiểu

    Lệnh zcat trong Linux là công cụ dòng lệnh dùng để xem và xử lý nội dung của các file nén định dạng .gz mà không cần giải nén. Với zcat, bạn có thể nhanh chóng đọc dữ liệu, kết hợp cùng các lệnh như grep, less, head để phân tích file nén một cách…

    10/02/2026

    Hướng dẫn sử dụng lệnh groupdel trên Linux để xoá nhóm người dùng
    Hướng dẫn sử dụng lệnh groupdel trên Linux để xoá nhóm người dùng

    Lệnh groupdel trong Linux là công cụ dòng lệnh dùng để xóa nhóm người dùng khỏi hệ thống. Việc sử dụng groupdel đúng cách giúp hệ thống gọn gàng hơn, hạn chế rủi ro phân quyền sai và tăng tính bảo mật trong quá trình quản trị. Trong bài viết này, mình sẽ cùng bạn…

    09/02/2026

    linux

    system-linux

    text