Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình Bash

Làm chủ vòng lặp For trong Bash: Hướng dẫn chi tiết với ví dụ thực tế

Vòng lặp for là công cụ hữu ích khi viết script Bash để lặp lại tác vụ cho nhiều file, bản ghi hoặc giá trị khác nhau.

Câu lệnh for sẽ lặp qua một danh sách các giá trị, thực hiện tác vụ trên từng mục cho đến khi xử lý hết tất cả các mục.

Các trường hợp sử dụng bao gồm: lặp qua các file trong thư mục, các dòng trong file văn bản, hoặc kết quả truy vấn cơ sở dữ liệu.

Cú pháp vòng lặp For trong Bash

for BIEN in DANH_SACH do LENH done

Trong đó:

  • BIEN là tên biến sẽ được gán giá trị của từng mục trong DANH_SACH khi được xử lý bởi LENH
  • DANH_SACH có thể có nhiều dạng. Xem ví dụ bên dưới

Các ví dụ về vòng lặp For trong Bash

Vòng lặp for có thể lặp qua các danh sách định nghĩa trước hoặc danh sách được tạo từ đầu ra của script/lệnh khác.

Lặp qua dải số với vòng lặp for

Xử lý từng số trong dải (tăng dần 1) sử dụng {BAT_DAU…KET_THUC}:

for num in {0..10} do echo "Dang dem den 10, hien tai la $num" done

Lưu ý:

  • Mỗi mục trong danh sách được gán tên biến num.
    • Truy cập sau này trong script bằng $num.
    • Lặp qua dải số chỉ được hỗ trợ từ Bash phiên bản 3 trở lên.
  • Các số được lặp bắt đầu từ số đầu ngoặc nhọn và kết thúc tại số cuối, tăng dần 1

Bước nhảy (Stepping) qua các số và tăng 3 đơn vị – chỉ xử lý các bội số của 3 – sử dụng {BAT_DAU…KET_THUC…BUOC_NHAY}:

for num in {0..15..3} do echo "$num la boi so cua 3!" done

Lưu ý:

  • Thêm số thứ ba vào biểu thức trong ngoặc nhọn.
    • Sẽ xử lý các số từ 0 đến 15 với bước nhảy 3
  • Lặp qua dải số với bước nhảy tùy chỉnh chỉ được hỗ trợ từ Bash phiên bản 4 trở lên.

Lặp qua danh sách chuỗi với vòng lặp for

Bạn cũng có thể lặp qua danh sách các giá trị chuỗi:

for car in Ford Holden Honda BMW Ferrari do echo "Toi muon lai xe $car" done

Lặp qua mảng (Array) với vòng lặp for

Mảng có thể khai báo trước rồi lặp qua các giá trị trong đó:

FRUITS=('Apple' 'Pear' 'Orange' 'Strawberry') for fruit in "${FRUITS[@]}" do echo "$fruit ngon qua" done

Lặp qua file (và các đầu ra khác) với vòng lặp for

Bạn cũng có thể lặp qua đầu ra của các lệnh dòng lệnh khác:

for f in * do echo "Ten file la $f" done

Lệnh Break

Lệnh break sẽ thoát khỏi vòng lặp tại một điểm cho trước:

for num in {0..15..3} do echo "$num la boi so cua 3!" if [[ "$num" == '9' ]] then break fi done echo 'Da dem den 9!'

Lệnh Continue

Lệnh continue sẽ bỏ qua phần code còn lại của vòng lặp hiện tại (bỏ qua hoàn toàn lần lặp này) và continue sang lần lặp tiếp theo:

for num in {0..15..3} do if [[ "$num" == '6' ]] then continue fi echo "$num la boi so cua 3!" done echo 'So 6 da bi bo qua!'

Kết luận

Sử dụng vòng lặp khi viết script sẽ tiết kiệm thời gian và cho phép bạn viết các script linh hoạt, tự động hóa việc xử lý file và dữ liệu mà không cần nhập liệu thủ công.

Xem thêm các bài viết khác của chúng tôi để có thêm mẹo scripting Bash!