Sự cho loop là một công cụ tiện dụng khi viết các tập lệnh Bash để lặp lại một tác vụ cho một số tệp, bản ghi hoặc các giá trị khác.
Câu lệnh for sẽ lặp lại danh sách các giá trị, thực hiện các tác vụ trên từng giá trị cho đến khi tất cả các mục đã được xử lý.
Các trường hợp sử dụng bao gồm lặp qua các tệp trong thư mục, các dòng trong tệp văn bản hoặc kết quả đầu ra của một truy vấn cơ sở dữ liệu.
Cú pháp Bash For Loop
for VARIABLE in LIST do COMMANDS done
Ở đâu:
- VARIABLE là tên biến sẽ được gán cho mỗi mục trong DANH SÁCH khi nó được xử lý bởi COMMANDS
- LIST có thể có một số dạng. Xem bên dưới để biết các ví dụ
Ví dụ về Bash For Loop
cho các vòng lặp có thể lặp lại các danh sách được xác định trước hoặc danh sách được tạo từ đầu ra của các tập lệnh hoặc ứng dụng dòng lệnh khác.
Lặp lại trên một dải số với một for Vòng lặp
Xử lý từng số trong phạm vi (tăng dần 1) bằng {START… END} :
for num in {0..10} do echo "I'm counting to 10 and I'm up to $num" done
Lưu ý rằng:
- Mỗi mục trong danh sách được đặt tên biến là num.
- Những thứ này được truy cập sau này trong tập lệnh bằng $ num.
- Việc lặp lại trên các dải số chỉ được hỗ trợ trong Bash phiên bản 3 trở lên.
- Các số được lặp lại bắt đầu bằng số ở đầu dấu ngoặc nhọn và chạy đến số ở cuối, với gia số là 1
Bước trên các số và tăng dần lên 3 - để chỉ các bội số của 3 được xử lý vào - sử dụng {START… END… INCREMENT} :
for num in {0..15..3} do echo "$num is a multiple of 3!" done
Lưu ý rằng:
- Một số thứ ba được thêm vào biểu thức trong dấu ngoặc nhọn.
- Điều này sẽ hoạt động trên các số từ 0 đến 15 với gia số là 3
- Việc lặp lại trên các phạm vi với mức tăng tùy chỉnh chỉ được hỗ trợ trong Bash phiên bản 4 trở lên.
Lặp lại danh sách chuỗi với for Vòng lặp
Bạn cũng có thể lặp lại danh sách các giá trị chuỗi:
for car in Ford, Holden, Honda, BMW, Ferrari do echo "I wish I could drive a $car" done
Lặp lại trên một mảng với for Vòng lặp
Một mảng có thể được khai báo dưới dạng một biến trước khi lặp qua các giá trị trong đó:
FRUITS=('Apple' 'Pear' 'Orange' 'Strawberry') for fruit in "${FRUITS[@]}" do echo "$fruit is delicious" done
Lặp lại các tệp (Và đầu ra khác) với for Vòng lặp
Bạn cũng có thể lặp lại đầu ra của các lệnh dòng lệnh khác:
for f in * do echo "Filename is $f" done
Giải lao
break câu lệnh sẽ thoát khỏi vòng lặp tại một điểm nhất định:
for num in {0..15..3} do echo "$num is a multiple of 3!" if [[ "$num" == '9' ]] then break fi done echo 'Finished counting at 9!'
Tiếp tục
Tiếp tục câu lệnh sẽ ngừng thực thi mã trong lần lặp hiện tại của vòng lặp (bỏ qua hoàn toàn) và tiếp tục sang lần lặp tiếp theo:
for num in {0..15..3} do if [[ "$num" == '6' ]] then continue fi echo "$num is a multiple of 3!" done echo 'The number 6 was skipped!'
Kết luận
Sử dụng vòng lặp trong khi viết tập lệnh sẽ giúp bạn tiết kiệm thời gian và cho phép bạn viết các tập lệnh linh hoạt có thể tự động xử lý tệp và dữ liệu mà không cần nhập dữ liệu thủ công.
Hãy xem các bài viết khác của chúng tôi để biết thêm các mẹo viết kịch bản Bash!