Computer >> Máy Tính >  >> Lập trình >> Lập trình BASH

Bash For Loop [Với các ví dụ]

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!