Trong tập lệnh Bash, một vòng lặp là một cấu trúc điều khiển cho phép bạn liên tục thực hiện một khối mã dựa trên các điều kiện cụ thể. Vòng lặp "cho" là một trong những vòng lặp được sử dụng phổ biến nhất trong kịch bản bash. Nó cung cấp một cách dễ dàng để lặp lại một danh sách các mục hoặc thực hiện một hành động cụ thể một số lần nhất định.
Cấu trúc cơ bản của một vòng lặp
Một vòng lặp "cho" trong tập lệnh bash có cấu trúc sau:
Đối với biến trong danh sách
LÀM
& nbsp; & nbsp; & nbsp; & nbsp; lệnh
xong
Vòng lặp bắt đầu bằng cách khởi tạo một biến, thường được gọi là biến "hiện tại" hoặc "iterator". Sau đó, nó chỉ định một danh sách các mục mà vòng lặp sẽ lặp lại. Vòng lặp sẽ thực thi các lệnh được chỉ định cho mỗi mục trong danh sách cho đến khi nó đi đến cuối.
Ví dụ 1: Lặp lại các số
Trong ví dụ này, chúng ta hãy tạo một tập lệnh bash in các số từ 1 đến 5 bằng cách sử dụng một vòng lặp "cho" "
#!/Bin/bash
for ((i = 1; i<=5; i++))
LÀM
& nbsp; & nbsp; & nbsp; & nbsp; echo $ i
xong
Kịch bản sẽ lặp lại các số từ 1 đến 5, tăng biến "I" bằng 1 với mỗi lần lặp, sau đó in giá trị hiện tại của "I" sử dụng lệnh "Echo".
Ví dụ 2: lặp lại các tệp trong thư mục
Vòng lặp "cho" cũng có thể được sử dụng để lặp lại các tệp trong một thư mục. Trong ví dụ này, chúng tôi sẽ liệt kê tất cả các tệp trong thư mục hiện tại:
#!/Bin/bash
cho tệp trong *
LÀM
& nbsp; & nbsp; & nbsp; & nbsp; echo $ file
xong
Biểu tượng "*" hoạt động như một ký tự đại diện và khớp với tất cả các tệp trong thư mục hiện tại. Vòng lặp sẽ lặp lại trên mỗi tên tệp và in nó bằng lệnh "Echo".
Ví dụ 3: Lặp lại các phần tử mảng
Trong kịch bản bash, bạn có thể xác định các mảng để lưu trữ nhiều giá trị. Vòng lặp "cho" có thể được sử dụng để lặp lại các phần tử của một mảng. Hãy lặp lại một loạt các loại trái cây:
#!/Bin/bash
trái cây = ("táo" "chuối" "anh đào"))
for fruit in ${fruits[@]}
LÀM
& nbsp; & nbsp; & nbsp; & nbsp; echo $ trái cây
xong
Vòng lặp sẽ lặp lại trên từng phần tử của mảng "trái cây" và in nó bằng lệnh "tiếng vang".
Mẹo nâng cao để sử dụng cho các vòng lặp
Dưới đây là một số mẹo và thủ thuật bổ sung để tăng cường cách sử dụng các vòng lặp "cho" trong kịch bản bash:
1. tiếp tục vòng lặp
Trong một số tình huống, bạn có thể muốn bỏ qua lần lặp hiện tại của một vòng lặp dựa trên các điều kiện nhất định. Bạn có thể sử dụng câu lệnh "Tiếp tục" để đạt được điều này. Đây là một ví dụ:
#!/Bin/bash
for ((i = 1; i<=10; i++))
LÀM
& nbsp; & nbsp; & nbsp; & nbsp; if ((i % 2 == 0))
& nbsp; & nbsp; & nbsp; & nbsp; sau đó
& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; tiếp tục
& nbsp; & nbsp; & nbsp; & nbsp; fi
& nbsp; & nbsp; & nbsp; & nbsp; echo $ i
xong
Vòng lặp sẽ lặp lại các số từ 1 đến 10, nhưng nó sẽ bỏ qua việc in các số thậm chí bằng cách sử dụng câu lệnh "Tiếp tục" trong điều kiện "IF".
2. Đổi tên các tệp với vòng lặp For For
Vòng lặp "cho" cũng có thể được sử dụng để đổi tên các tệp trong một thư mục. Dưới đây là một ví dụ đổi tên tất cả các tệp ". txt" trong một thư mục với tiện ích mở rộng ". bak":
#!/Bin/bash
cho tệp trong *. txt
LÀM
mv "$file" "${file%.txt}.bak"
xong
Vòng lặp sẽ lặp lại trên tất cả các tệp ". txt" trong thư mục và đổi tên từng tệp bằng cách xóa phần mở rộng ". txt" và thêm ". bak" sử dụng lệnh "MV".
Phần kết luận
Vòng lặp "for" là một cấu trúc mạnh mẽ trong tập lệnh bash cho phép bạn thực hiện các lần lặp và thực hiện các tác vụ lặp đi lặp lại. Cho dù bạn là người mới bắt đầu hay lập trình viên bash nâng cao, sự hiểu biết và sử dụng hiệu quả vòng lặp "cho" có thể nâng cao đáng kể khả năng kịch bản của bạn. Thử nghiệm với các ví dụ khác nhau và khám phá các cách sáng tạo để sử dụng "cho" các vòng lặp trong các tập lệnh bash của bạn.
Tác giả: Ẩn danh
Cho các mẹo vòng lặp
Trong kịch bản bash,vì
Loop là một công cụ mạnh mẽ cho phép bạn tự động hóa các tác vụ lặp đi lặp lại. Phần này sẽ cung cấp cho bạn một số mẹo và thủ thuật hữu ích để sử dụng hiệu quảvì
Vòng lặp trong kịch bản của bạn.
- Sử dụng phạm vi số: Bằng cách sử dụng cú pháp dựa trên phạm vi, bạn có thể dễ dàng tạo một vòng lặp lặp lại trên một chuỗi số. Ví dụ:
for num in {1..5}
do
Echo "Số: $ num"
xong
- Vòng lặp qua danh sách các mục: Thay vì sử dụng phạm vi số, bạn cũng có thể sử dụng danh sách các mục làm mục tiêu của vòng lặp. Ví dụ:
trái cây = ("táo" "chuối" "anh đào" "quả việt quất"))
for fruit in ${fruits[@]}
do
Echo "Trái cây: $ trái cây"
xong
- Tránh các vòng lặp lồng nhau: Các vòng lặp lồng nhau có thể nhanh chóng trở nên phức tạp và khó duy trì. Nếu có thể, hãy cố gắng tái cấu trúc mã của bạn để tránh sử dụng các vòng lặp lồng nhau.
- Kiểm tra sự hiện diện của các tệp: bạn có thể sử dụng
-f
cờ vớiif
Tuyên bố để kiểm tra xem một tệp có tồn tại trước khi thực hiện các lệnh nhất định trong vòng lặp không. - Tên tệp thay thế: Nếu bạn cần làm việc với một loạt các tệp theo một mẫu đặt tên cụ thể, bạn có thể sử dụng các ký tự đại diện hoặc biểu thức thông thường để tạo danh sách các tên tệp và lặp lại chúng.
- Sử dụng các điều kiện thoát sớm: Nếu bạn muốn vòng lặp chấm dứt trước khi hoàn thành tất cả các lần lặp, bạn có thể sử dụng
phá vỡ
hoặcTiếp tục
tuyên bố để thoát khỏi vòng lặp sớm. - Giữ nội dung vòng lặp đơn giản: Để cải thiện khả năng đọc và khả năng bảo trì, nên giữ cơ thể của vòng lặp càng ngắn và súc tích càng tốt. Nếu bạn thấy mình viết mã phức tạp và dài trong vòng lặp, hãy xem xét việc tái cấu trúc nó thành các chức năng riêng biệt.
Bằng cách làm theo các mẹo này, bạn có thể viết các tập lệnh bash sạch sẽ và hiệu quả để sử dụng hiệu quảvì
Vòng lặp cho mục đích tự động hóa và lập trình.
Hãy đưa những lời khuyên này vào thực tế với một số ví dụ:
- Ví dụ 1: Vòng lặp qua một loạt các số và in giá trị:
for i in {1..5}
do
Echo "Giá trị: $ i"
xong
- Ví dụ 2: Vòng lặp qua danh sách các tệp và thực hiện các hành động trên mỗi tệp:
file = ("file1. txt" "file2. txt" "file3. txt")
for file in ${files[@]}
do
Echo "Tệp xử lý: $ File"
# Thực hiện các hành động trên tệp
xong
Kết luận,vì
Loop là một cấu trúc đa năng trong kịch bản bash cho phép bạn tự động hóa các tác vụ lặp đi lặp lại. Với cách tiếp cận đúng đắn và những lời khuyên này trong tâm trí, bạn có thể sử dụng hiệu quảvì
Vòng lặp cho một loạt các kịch bản lập trình và tự động hóa.