Cách một PowerShell For Loop có thể chạy một lệnh nhiều lần

Vòng lặp For là một trong những công cụ có giá trị nhất trong bất kỳ ngôn ngữ lập trình nào(valuable tools in any programming language) và  Microsoft PowerShell cũng không ngoại lệ. Bạn có thể sử dụng các vòng lặp khác để lặp lại các lệnh, nhưng vòng lặp For có lẽ là đơn giản nhất.

Từ việc lặp lại các mảng đến thực hiện một chức năng với số lần được xác định trước, có rất nhiều điều bạn có thể đạt được với công cụ này. Đây là hướng dẫn về cách sử dụng vòng lặp For trong PowerShell .

Việc sử dụng (Use)vòng lặp(Loops) For trong PowerShell là gì?

Không giống như Command Prompt , PowerShell là một môi trường kịch bản hoàn chỉnh. Điều này có nghĩa là bạn có thể viết các tập lệnh PowerShell(PowerShell scripts) có thể tái sử dụng để tự động thực hiện các tác vụ thay vì nhập lệnh theo cách thủ công. Và vòng lặp For là chìa khóa để viết các mô-đun này.

Câu lệnh For lặp lại một khối tập lệnh một số lần cụ thể, sửa đổi một biến nhất định để theo dõi tiến trình. Điều này cho phép bạn sử dụng vòng lặp cho một số tình huống khá thú vị.

Bạn có thể tạo chuỗi số, xác định số nguyên tố hoặc hiển thị đồng hồ đếm ngược. Thực tế hơn, bạn có thể lặp qua một mảng đối tượng, thực hiện một số hành động với mỗi mục nhập.

pháp của (Syntax)vòng lặp(Loop) For trong PowerShell

Vòng lặp for hoạt động trong Windows PowerShell giống như cách chúng làm trong bất kỳ ngôn ngữ lập trình nào. Các biểu thức khởi tạo biến theo dõi, kiểm tra giá trị của nó và sửa đổi biến được đặt trong dấu ngoặc sau “Đối”, được phân tách bằng dấu chấm phẩy. Sau đó, danh sách câu lệnh được ràng buộc bởi dấu ngoặc nhọn.

Đối với ( Khởi tạo(Initialization) ; Điều kiện(Condition) ; Cập nhật(Update) )

{

    Khối tập lệnh(Script Block)

}

Cách sử dụng Vòng lặp(Loop) For trong Tập lệnh PowerShell(PowerShell Script)

Sử dụng vòng lặp For khá đơn giản. Bất cứ khi nào bạn gặp phải tình huống yêu cầu lặp lại một bước hơi khác, bạn nên đưa nó vào vòng lặp For.

Giả sử bạn cần viết một đoạn mã có thể tìm tổng của tất cả các số tự nhiên cho đến một số n , chứa trong biến $ n. Đây là một ví dụ cơ bản về vòng lặp For:

$ n = 10

$ sum = 0

Đối với ($ i = 1; $ i -le $ n; $ i ++)

{

    $ sum = $ sum + $ i

}

“Tổng của $ n số tự nhiên là $ sum”

Truy cập các mảng thông qua một vòng lặp

Hầu hết mọi người sử dụng PowerShell(PowerShell) đều không tạo được chuỗi số . Một cách sử dụng phổ biến hơn là lặp qua một mảng.

Giả sử(Say) bạn có một mảng $ tuần với bảy phần tử. Bạn có thể xuất ra danh sách các ngày có trong mảng bằng vòng lặp For đơn giản, như được minh họa trong ví dụ sau.

Đối với ($ i = 0; $ i -lt $ week.Length; $ i ++)

{

    $ tuần [$ i]

}

Sử dụng ForEach Loop để Lặp lại nhanh chóng(Quickly Iterate) qua một mảng

Một dạng khác của vòng lặp For là câu lệnh ForEach . Phiên bản này đơn giản hóa việc xem qua nội dung của mảng PowerShell và xử lý chúng riêng lẻ. (PowerShell)Ví dụ: đoạn mã trước đó có thể được viết lại như sau:

Foreach ($ ngày trong $ tuần)

{

    $ ngày

}

Khi xử lý các đối tượng phức tạp hơn, bạn cũng có thể sử dụng lệnh ghép ngắn Foreach-Object để thực hiện tác vụ đối với nội dung của bất kỳ lệnh PowerShell nào .

Vòng lặp(Loop Different) For khác với các loại (Types)vòng lặp(Loops) khác như thế nào?

Vòng lặp For không phải là loại câu lệnh lặp duy nhất có sẵn cho bạn. Giống như hầu hết các ngôn ngữ lập trình, PowerShell có nhiều loại vòng lặp.

Trong khi

Đơn giản nhất trong số này là vòng lặp While. Tất cả những gì bạn có là một điều kiện và một khối tập lệnh, và vòng lặp chạy miễn là biểu thức kiểm tra đánh giá là true. Vì biểu thức được đánh giá đầu tiên, nên có cơ hội để mã không chạy chút nào hoặc kết thúc như một vòng lặp vô hạn. 

Trong khi ( Điều kiện(Condition) )

{

    Khối tập lệnh(Script Block)

}

Làm trong khi

Nếu bạn đang viết một tập lệnh cần chạy ít nhất một lần - ngay cả khi biểu thức đánh giá là sai - thì bạn có thể sử dụng vòng lặp Do-While . Sự khác biệt duy nhất so với vòng lặp While là nó đặt khối lệnh trước điều kiện, có nghĩa là mã được thực thi trước khi biểu thức kiểm tra được kiểm tra lần đầu tiên.

Làm {

    Khối tập lệnh(Script block)

}

Trong khi ( Điều kiện(Condition) )

Làm cho đến khi

Một phiên bản khác của vòng lặp này là Do-Until . Về cơ bản(Basically) , nó chạy khối mã và sau đó lặp lại nó cho đến khi biểu thức kiểm tra là đúng - ngược lại của vòng lặp Do-While . Không phải là một cấu trúc đặc biệt hữu ích, vì bạn có thể đạt được điều tương tự bằng cách sửa đổi điều kiện trong vòng lặp Do-While tiêu chuẩn .

Làm {

    Khối tập lệnh(Script Block)

}

Cho đến khi ( Điều kiện(Condition) )

Tại sao For Loop lại tốt hơn

Vấn đề với tất cả các cấu trúc lặp khác này là chúng không bao gồm giá trị ban đầu hoặc các câu lệnh cập nhật. Bạn phải ghi nhớ cách tạo một biến bên ngoài vòng lặp theo cách thủ công và sau đó tăng (hoặc giảm biến) trong mỗi lần vượt qua vòng lặp.

Như bạn có thể mong đợi, các lập trình viên thường quên bước này, dẫn đến kịch bản không hoạt động như ý muốn. Điều này làm lãng phí thời gian quý báu trong việc gỡ lỗi.

Vòng lặp For tránh được vấn đề này bằng cách yêu cầu các biểu thức khởi tạo và tăng trong dấu ngoặc bắt đầu. Điều này dẫn đến các tập lệnh rõ ràng hơn, mạnh mẽ hơn.

Khi nào bạn nên sử dụng For Loop trong PowerShell ?

PowerShell là tất cả về việc tạo các tập lệnh để tự động hóa. Và có lẽ công cụ hữu ích nhất để đạt được điều này là vòng lặp For. Bạn có thể sử dụng nó để thay thế nhiều thao tác sao chép-dán bằng một tập lệnh nhỏ gọn, thanh lịch hơn.

Chức năng phổ biến nhất của vòng lặp này là lặp qua một mảng, một mục nhập tại một thời điểm. Để có một tập lệnh được sắp xếp hợp lý hơn, bạn cũng có thể sử dụng vòng lặp ForEach . Bạn cũng có thể sử dụng vòng lặp For để tạo chuỗi số, mặc dù điều đó hiếm khi cần thiết.

Vòng lặp For đạt điểm hơn các thuật toán lặp khác bằng cách bao gồm tất cả các chức năng thiết yếu của vòng lặp vào các tham số, ngăn ngừa bất kỳ lỗi nào do quên các câu lệnh đó. Điều này làm cho vòng lặp For không thể thiếu trong bất kỳ kịch bản nào yêu cầu lặp lại một tập hợp lệnh.



About the author

Tôi là một kỹ sư phần cứng với hơn 10 năm kinh nghiệm trong lĩnh vực này. Tôi chuyên về bộ điều khiển và cáp USB, cũng như nâng cấp BIOS và hỗ trợ ACPI. Trong thời gian rảnh rỗi, tôi cũng thích viết blog về các chủ đề khác nhau liên quan đến công nghệ và kỹ thuật.



Related posts