Android

Bash trong khi lặp

15 Bash For Loop Examples for Linux / Unix / OS X Shell Scripting

15 Bash For Loop Examples for Linux / Unix / OS X Shell Scripting

Mục lục:

Anonim

Vòng lặp là một trong những khái niệm cơ bản của ngôn ngữ lập trình. Vòng lặp rất tiện lợi khi bạn muốn chạy một chuỗi số lần lệnh cho đến khi một điều kiện cụ thể được đáp ứng.

Trong các ngôn ngữ kịch bản như Bash, các vòng lặp rất hữu ích để tự động hóa các tác vụ lặp đi lặp lại. Có 3 cấu trúc vòng lặp cơ bản trong kịch bản Bash, cho vòng lặp, vòng lặp while và cho đến vòng lặp.

Hướng dẫn này giải thích những điều cơ bản về vòng lặp while trong Bash cũng như ngắt và tiếp tục phát biểu để thay đổi dòng chảy của vòng lặp.

Bash trong khi Loop

Vòng lặp while được sử dụng để thực hiện một tập hợp các lệnh đã cho với số lần không xác định miễn là điều kiện đã cho đánh giá là đúng.

Vòng lặp Bash có dạng sau:

while do done

Điều kiện được đánh giá trước khi thực hiện các lệnh. Nếu điều kiện đánh giá là đúng, các lệnh được thực thi. Mặt khác, nếu điều kiện ước lượng thành sai, vòng lặp sẽ bị chấm dứt và điều khiển chương trình sẽ được chuyển đến lệnh theo sau.

Trong ví dụ dưới đây, trên mỗi lần lặp, vòng lặp sẽ in giá trị hiện tại của biến i và tăng biến số lên một.

i=0 while do echo Number: $i ((i++)) done

Vòng lặp Tue lặp lại miễn là i nhỏ hơn hoặc bằng hai. Nó sẽ tạo ra đầu ra sau:

Number: 0 Number: 1 Number: 2

Vô hạn trong khi Loop

Một vòng lặp vô hạn là một vòng lặp lặp đi lặp lại vô thời hạn và không bao giờ chấm dứt. Nếu điều kiện luôn luôn được đánh giá là đúng, bạn sẽ có một vòng lặp vô hạn.

Trong ví dụ sau, chúng tôi đang sử dụng lệnh tích hợp : luôn trả về true để tạo một vòng lặp vô hạn. Bạn cũng có thể sử dụng lệnh tích hợp thực hoặc bất kỳ câu lệnh nào luôn trả về true.

while: do echo "Press to exit." sleep 1 done while: do echo "Press to exit." sleep 1 done

Vòng lặp while ở trên sẽ chạy vô thời hạn. Bạn có thể chấm dứt vòng lặp bằng cách nhấn CTRL+C

Đây là một dòng tương đương:

while:; do echo 'Press to exit.'; sleep 1; done while:; do echo 'Press to exit.'; sleep 1; done

Đọc một dòng tệp theo dòng

Một trong những cách sử dụng phổ biến nhất của vòng lặp while là đọc tệp, luồng dữ liệu hoặc biến dòng theo dòng.

Trong ví dụ sau, vòng lặp while sẽ đọc dòng tệp /etc/passwd theo từng dòng và in từng dòng.

file=/etc/passwd while read -r line; do echo $line done < "$file"

Thay vì kiểm soát vòng lặp while với một điều kiện, chúng tôi đang sử dụng chuyển hướng đầu vào ( < "$file" ) để truyền một tệp tới lệnh read là lệnh điều khiển vòng lặp. Vòng lặp while sẽ chạy cho đến khi dòng cuối cùng được đọc.

Khi đọc từng dòng tệp, luôn luôn sử dụng read với tùy chọn -r để ngăn dấu gạch chéo ngược hoạt động như một ký tự thoát.

Theo mặc định, lệnh read cắt các ký tự khoảng trắng hàng đầu / dấu (khoảng trắng và tab). Sử dụng tùy chọn IFS= trước lệnh read để ngăn chặn hành vi này

file=/etc/passwd while IFS= read -r line; do echo $line done < "$file"

Tuyên bố phá vỡ và tiếp tục

Các câu lệnh break và continue có thể được sử dụng để kiểm soát việc thực hiện vòng lặp while.

Tuyên bố phá vỡ

Câu lệnh break chấm dứt vòng lặp hiện tại và chuyển điều khiển chương trình cho lệnh theo vòng lặp kết thúc. Nó thường được sử dụng để chấm dứt vòng lặp khi một điều kiện nhất định được đáp ứng.

Trong ví dụ sau, việc thực hiện vòng lặp sẽ bị gián đoạn khi mục lặp hiện tại bằng 2 .

i=0 while do echo "Number: $i" ((i++)) if]; then break fi done echo 'All Done!'

Number: 0 Number: 1 All Done!

Tiếp tục tuyên bố

Câu lệnh continue thoát khỏi lần lặp hiện tại của một vòng lặp và chuyển điều khiển chương trình sang lần lặp tiếp theo của vòng lặp.

Trong phần dưới đây, một khi mục lặp hiện tại bằng 2 , câu lệnh continue sẽ khiến cho việc thực thi trở về đầu vòng lặp và tiếp tục với lần lặp tiếp theo.

i=0 while do ((i++)) if]; then continue fi echo "Number: $i" done echo 'All Done!'

Number: 1 Number: 3 Number: 4 Number: 5 All Done!

Phần kết luận

Bây giờ bạn nên hiểu rõ về cách sử dụng vòng lặp bash while.

thiết bị đầu cuối bash loop