Biến là cấu trúc dữ liệu cơ bản nhất trong bất kỳ loại mã hóa nào. Nhưng các biến đơn lẻ hầu như không đủ cho hầu hết các mục đích, đặc biệt là khi xử lý các thuật toán phức tạp hơn.
Đó là lúc mảng xuất hiện. Dù là C++ hay Python, mảng đều có mặt trong mọi ngôn ngữ lập trình dưới một số dạng. Nhưng còn Windows PowerShell thì sao? Mảng PowerShell hoạt động như thế nào? Làm thế nào để bạn sử dụng chúng? Cú pháp của họ là gì? Hãy cùng tìm hiểu.
Mảng PowerShell 101
Nói một cách đơn giản, mảng chỉ là một tập hợp các biến có cấu trúc. Ý tưởng là để loại bỏ rắc rối khi theo dõi hàng tá tên bằng cách thu gọn các biến liên quan thành một tập hợp được đánh số.
Trong PowerShell, bạn có thể tạo một biến bằng cách thêm ký hiệu $ vào tên biến. Ví dụ:
$prime = 13
Biến có thể chứa bất kỳ kiểu dữ liệu nào, từ số đến chuỗi. Bạn chỉ cần sử dụng dấu ngoặc kép hoặc dấu ngoặc đơn để chỉ định một chuỗi.
$name = “Levin”
Bây giờ để tạo một mảng mới, chỉ cần gán nhiều giá trị cho cùng một biến, phân tách bằng dấu phẩy. Như thế này:
$week = “Thứ Hai”, “Thứ Ba”, “Thứ Tư”, “Thứ Năm”, “Thứ Sáu”, “Thứ Bảy”, “Chủ Nhật”
Một số người thích chuyển một biến thành một mảng một cách rõ ràng để tránh nhầm lẫn, mặc dù điều đó không cần thiết. Để thực hiện việc này, hãy đặt các giá trị vào dấu ngoặc đơn có dấu @ bắt đầu.
$week = @(“Thứ Hai”, “Thứ Ba”, “Thứ Tư”, “Thứ Năm”, “Thứ Sáu”, “Thứ Bảy”, “Chủ nhật”)
Điều này thường hữu ích khi cố gắng đưa đầu ra của các lệnh khác vào một mảng, nơi bạn không thể viết chúng theo đúng định dạng theo cách thủ công.
Tạo mảng
Chúng ta đã thấy phương pháp phổ biến nhất để tạo mảng. Nhưng tùy vào hoàn cảnh mà có những cách khác có thể phù hợp hơn. Ví dụ: nếu bạn muốn tạo một mảng chứa một dãy số, bạn có thể sử dụng toán tử phạm vi:
$chữ số = (0..9)
Điều này sẽ tạo ra một mảng gồm tất cả mười chữ số từ 0 đến 9. Bạn cũng có thể khởi tạo một mảng trống, trong trường hợp sau này bạn chỉ muốn có một nơi để lưu trữ giá trị..
$values = @()
Thậm chí nhiều mảng có thể được lồng vào nhau, mặc dù cách sử dụng này có thể gây nhầm lẫn rất nhanh.
$copositions = @(
(5, 10, 23),
(11, 7, 16)
)
Theo mặc định, một mảng có thể lưu trữ bất kỳ loại biến nào, có thể là số, chuỗi hoặc kết hợp cả hai. Nhưng bạn có thể xác định rõ ràng một loại trong trường hợp bạn muốn giới hạn các giá trị được đặt trong đó. Ví dụ:
[int[]] $numbers = 2,3,4,5
Bằng cách này, mảng chỉ có thể chứa số nguyên. Cố gắng gán bất kỳ loại giá trị nào khác cho nó sẽ trả về lỗi. Điều này có thể hữu ích để ngăn các lỗi đơn giản đối với các mảng chỉ làm việc với các giá trị số, vì việc nhập chuỗi vào một biến dùng trong phép tính sẽ gây ra sự cố.
Truy cập mảng
Cho đến nay chúng ta đã thấy nhiều phương pháp tạo mảng chứa nhiều loại dữ liệu khác nhau. Nhưng bạn làm cách nào để truy cập dữ liệu này?
Mảng PowerShell sử dụng cùng định dạng được sử dụng bởi các ngôn ngữ lập trình khác. Mỗi biến mảng có thể được truy cập bằng số chỉ mục của nó. Ví dụ:
$var = $numbers[5]
Điều này sẽ sao chép giá trị được lưu trữ trong chỉ mục năm của mảng $numberstrong biến $var. Lưu ý rằng các chỉ số mảng bắt đầu đếm từ 0, vì vậy mục đầu tiên được truy cập bằng 0.
Nếu chúng ta xuất cái này, ví dụ:
“$ngày[2]”
Chúng ta sẽ có thứ Tư chứ không phải thứ Ba.
Bạn cũng có thể sử dụng phương pháp tương tự để sửa đổi các giá trị này. Ví dụ: lệnh sau sẽ thay đổi phần tử thứ hai của mảng thành 0:
$số[1] = 0
Bạn cũng có thể thêm nhiều phần tử hơn vào một mảng hiện có thay vì thay đổi giá trị của các mục hiện tại chỉ bằng cách thêm chúng như một biểu thức số học.
$names += “Johny”
Phương pháp này có thể được sử dụng để thêm nhiều mục cùng một lúc hoặc thậm chí toàn bộ mảng.
$names += “Charlie, Liam, Teresa”
$names += $họ
Phương thức được phân tách bằng dấu phẩy cũng có thể truy cập vào nhiều phần tử mảng. Ví dụ: việc nhập thông tin này sẽ lưu trữ năm phần tử đầu tiên của $daystrong $weekdays..
$ngày trong tuần = $ngày[0,1,2,3,4]
Lặp qua mảng
Truy cập theo cách thủ công các phần tử cụ thể của một mảng là điều tốt, nhưng nếu bạn muốn thực hiện các hành động trên toàn bộ nội dung của một mảng thì việc này có thể trở nên tẻ nhạt. Một cách tiếp cận tinh tế hơn là sử dụng vòng lặp For.
Vòng lặp For có thể đi qua tất cả các phần tử của mảng một cách có hệ thống, xử lý từng giá trị theo hướng dẫn. Đây là cách bạn có thể xây dựng một vòng lặp như vậy:
Đối với ($i = 0 ; $i -lt $days.Length ; $i++)
{
$days[$i]
Hàm array.Length trả về kích thước của mảng, về cơ bản là số phần tử trong đó. Điều này có thể được cắm vào tham số biểu thức kiểm tra của vòng lặp For để lặp lại toàn diện trên tất cả các phần tử.
Vòng lặp Foreach và vòng lặp Foreach-object có thể thực hiện tương tự với tập lệnh PowerShell thậm chí còn gọn gàng hơn.
Foreach ($ngày tính bằng $ngày)
{
$day
Điều này giúp bạn tiết kiệm công sức xác định kích thước của mảng, để lại các chi tiết cho PowerShell xử lý.
Khi nào bạn nên sử dụng mảng PowerShell
Nguồn lỗi lớn nhất trong một tập lệnh phức tạp là các biến được tham chiếu không chính xác. Điều này xảy ra do có một số lượng lớn các biến được đặt tên duy nhất, khiến bạn khó nhớ mục đích của chúng.
Cách khắc phục đơn giản nhất cho vấn đề này là sử dụng rộng rãi mảng. Tất cả các biến liên quan theo cách nào đó có thể được gán vào một mảng duy nhất và được truy cập thông qua số chỉ mục của chúng.
Microsoft PowerShell trường hợp sử dụng chính là tự động hóa và mảng đóng vai trò then chốt trong đó. Các đối tượng được lệnh ghép ngắn PowerShell trả về có thể được lưu trữ thành mảng và lặp lại. Điều này cho phép các tác vụ tuần tự được thực hiện tự động, đơn giản hóa đáng kể việc quản trị hệ thống.
.