ตัวแปรเป็นโครงสร้างข้อมูลพื้นฐานที่สุดใน การเข้ารหัสประเภทใดก็ได้ แต่ตัวแปรเดี่ยวนั้นแทบจะไม่เพียงพอสำหรับวัตถุประสงค์ส่วนใหญ่ โดยเฉพาะอย่างยิ่งเมื่อต้องรับมือกับอัลกอริธึมที่ซับซ้อนมากขึ้น
นั่นคือที่มาของอาร์เรย์ ไม่ว่าจะเป็น C++ หรือ หลาม อาร์เรย์จะปรากฏในทุกภาษาการเขียนโปรแกรมในบางรูปแบบ แต่แล้ว Windows PowerShell ล่ะ? อาร์เรย์ PowerShell ทำงานอย่างไร คุณใช้มันอย่างไร? ไวยากรณ์ของพวกเขาคืออะไร? มาดูกัน
อาร์เรย์ PowerShell 101
พูดง่ายๆ ก็คือ อาร์เรย์เป็นเพียงกลุ่มของตัวแปรที่มีโครงสร้างเท่านั้น แนวคิดคือการขจัดความยุ่งยากในการติดตามชื่อหลายสิบชื่อด้วยการยุบตัวแปรที่เกี่ยวข้องให้เป็นชุดตัวเลข
ใน PowerShell คุณสามารถสร้างตัวแปรได้โดยใส่สัญลักษณ์ $ นำหน้าชื่อตัวแปร ตัวอย่างเช่น:
$ไพรม์ = 13
ตัวแปรสามารถมีข้อมูลประเภทใดก็ได้ ตั้งแต่ตัวเลขไปจนถึงสตริง คุณเพียงแค่ต้องใช้เครื่องหมายคำพูดคู่หรือเดี่ยวเพื่อระบุสตริง
$name = “เลวิน”
ตอนนี้ หากต้องการสร้างอาร์เรย์ใหม่ เพียงกำหนดค่าหลายค่าให้กับตัวแปรเดียวกัน โดยคั่นด้วยเครื่องหมายจุลภาค เช่นนี้:
$week = “วันจันทร์”, “วันอังคาร”, “วันพุธ”, “วันพฤหัสบดี”, “วันศุกร์”, “วันเสาร์”, “วันอาทิตย์”
บางคนชอบที่จะแปลงตัวแปรลงในอาร์เรย์อย่างชัดเจนเพื่อหลีกเลี่ยงความสับสน แม้ว่าจะไม่จำเป็นก็ตาม ในการดำเนินการนี้ ให้ใส่ค่าลงในวงเล็บที่มีสัญลักษณ์ @ นำหน้า
$week = @(“วันจันทร์”, “วันอังคาร”, “วันพุธ”, “วันพฤหัสบดี”, “วันศุกร์”, “วันเสาร์”, “วันอาทิตย์”)
ซึ่งมักจะมีประโยชน์เมื่อพยายามนำเอาต์พุตของคำสั่งอื่นไปไว้ในอาร์เรย์ ซึ่งคุณไม่สามารถเขียนคำสั่งเหล่านั้นในรูปแบบที่ถูกต้องด้วยตนเองได้
การสร้างอาร์เรย์
เราได้เห็นวิธีการทั่วไปในการสร้างอาร์เรย์แล้ว แต่ขึ้นอยู่กับสถานการณ์ก็มีวิธีอื่นที่อาจเหมาะสมกว่า ตัวอย่างเช่น หากคุณต้องการสร้างอาร์เรย์ที่มีช่วงตัวเลข คุณสามารถใช้ตัวดำเนินการช่วง:
$หลัก = (0..9)
สิ่งนี้จะสร้างอาร์เรย์ของตัวเลขสิบหลักทั้งหมดตั้งแต่ศูนย์ถึงเก้า คุณยังสามารถเริ่มต้นอาร์เรย์ว่างได้ ในกรณีที่คุณต้องการเพียงพื้นที่สำหรับเก็บค่าในภายหลัง.
$values = @()
อาร์เรย์หลายตัวสามารถซ้อนกันได้ แม้ว่าการใช้งานประเภทนี้อาจทำให้เกิดความสับสนอย่างรวดเร็ว
$พิกัด = @(
(5, 10, 23),
(11, 7, 16)
)
ตามค่าเริ่มต้น อาร์เรย์สามารถจัดเก็บตัวแปรประเภทใดก็ได้ ไม่ว่าจะเป็นตัวเลข สตริง หรือทั้งสองอย่างผสมกัน แต่คุณสามารถกำหนดประเภทได้อย่างชัดเจนในกรณีที่คุณต้องการจำกัดค่าที่ใส่ไว้ ตัวอย่างเช่น:
[int[]] $numbers = 2,3,4,5
ด้วยวิธีนี้ อาร์เรย์สามารถเก็บเฉพาะจำนวนเต็มเท่านั้น การพยายามกำหนดค่าประเภทอื่นให้กับค่านั้นจะส่งคืนข้อผิดพลาด สิ่งนี้มีประโยชน์ในการป้องกันข้อผิดพลาดทั่วไปสำหรับอาร์เรย์ที่ทำงานเฉพาะกับค่าตัวเลข เนื่องจากการป้อนสตริงลงในตัวแปรที่จะใช้ในการคำนวณจะสร้างปัญหาขึ้น
การเข้าถึงอาร์เรย์
จนถึงตอนนี้ เราได้เห็นวิธีการมากมายในการสร้างอาร์เรย์ที่มีข้อมูลประเภทต่างๆ แต่คุณจะเข้าถึงข้อมูลนี้ได้อย่างไร
อาร์เรย์ PowerShell ใช้รูปแบบเดียวกับที่ใช้โดยภาษาการเขียนโปรแกรมอื่น ตัวแปรอาร์เรย์แต่ละตัวสามารถเข้าถึงได้ด้วยหมายเลขดัชนี ตัวอย่างเช่น:
$var = $numbers[5]
การดำเนินการนี้จะคัดลอกค่าที่จัดเก็บไว้ในดัชนี 5 ของอาร์เรย์ $numbersในตัวแปร $varโปรดทราบว่าดัชนีอาร์เรย์เริ่มนับจาก 0 ดังนั้นรายการแรกจึงเข้าถึงได้ด้วยศูนย์
ถ้าเราจะส่งออกสิ่งนี้ เช่น:
“$วัน[2]”
เราจะได้วันพุธ ไม่ใช่วันอังคาร
คุณสามารถใช้วิธีเดียวกันนี้เพื่อแก้ไขค่าเหล่านี้ได้เช่นกัน ตัวอย่างเช่น คำสั่งต่อไปนี้จะเปลี่ยนองค์ประกอบที่สองของอาร์เรย์เป็นศูนย์:
$numbers[1] = 0
คุณยังสามารถเพิ่มองค์ประกอบเพิ่มเติมให้กับอาร์เรย์ที่มีอยู่ แทนที่จะเปลี่ยนค่าของรายการปัจจุบัน เพียงแค่เพิ่มองค์ประกอบเหล่านั้นเหมือนนิพจน์ทางคณิตศาสตร์
$names += “จอห์นนี่”
วิธีนี้สามารถใช้เพื่อเพิ่มหลายรายการพร้อมกัน หรือแม้แต่ทั้งอาร์เรย์ก็ได้
$names += “ชาร์ลี เลียม เทเรซา”
$ชื่อ += $นามสกุล
วิธีการที่คั่นด้วยเครื่องหมายจุลภาคใช้สำหรับการเข้าถึงองค์ประกอบอาร์เรย์หลายรายการด้วย ตัวอย่างเช่น การป้อนข้อมูลนี้จะจัดเก็บห้าองค์ประกอบแรกของ $daysไว้ใน $weekdays.
$วันธรรมดา = $วัน[0,1,2,3,4]
วนซ้ำผ่านอาร์เรย์
การเข้าถึงองค์ประกอบเฉพาะของอาร์เรย์ด้วยตนเองนั้นทำได้ดีและดี แต่ถ้าคุณต้องการดำเนินการกับเนื้อหาทั้งหมดของอาร์เรย์ อาจเป็นเรื่องที่น่าเบื่อได้ แนวทางที่หรูหรากว่าคือการใช้ For loop
For loops สามารถผ่านองค์ประกอบทั้งหมดของอาร์เรย์อย่างเป็นระบบ โดยประมวลผลแต่ละค่าตามคำแนะนำ นี่คือวิธีที่คุณสามารถสร้างการวนซ้ำ:
สำหรับ ($i = 0 ; $i -lt $days.Length ; $i++)
{
$days[$i]
}แข็งแกร่ง>
ฟังก์ชัน array.Length ส่งคืนขนาดของอาร์เรย์ ซึ่งโดยพื้นฐานแล้วคือจำนวนองค์ประกอบในนั้น สามารถเสียบเข้ากับพารามิเตอร์นิพจน์การทดสอบของ For loop เพื่อวนซ้ำองค์ประกอบทั้งหมดอย่างครอบคลุม
ลูป Foreach และลูป Foreach-object สามารถทำเช่นเดียวกันกับสคริปต์ PowerShell ที่บางยิ่งขึ้น
foreach ($วันใน $days)
{
$day
}
วิธีนี้ช่วยให้คุณประหยัดเวลาในการกำหนดขนาดของอาร์เรย์ โดยปล่อยให้ PowerShell จัดการรายละเอียด
เมื่อใดที่คุณควรใช้อาร์เรย์ PowerShell
แหล่งที่มาของจุดบกพร่องที่ใหญ่ที่สุดในสคริปต์ที่ซับซ้อนคือตัวแปรที่อ้างอิงอย่างไม่ถูกต้อง สิ่งนี้เกิดขึ้นเนื่องจากมีตัวแปรที่มีชื่อไม่ซ้ำกันจำนวนมาก ซึ่งทำให้ยากต่อการจดจำวัตถุประสงค์
วิธีแก้ปัญหาที่ง่ายที่สุดสำหรับปัญหานี้คือการใช้อาร์เรย์อย่างกว้างขวาง ตัวแปรทั้งหมดที่เกี่ยวข้องในลักษณะใดลักษณะหนึ่งสามารถกำหนดให้กับอาร์เรย์เดียวและเข้าถึงได้ผ่านหมายเลขดัชนี
กรณีการใช้งานที่สำคัญของของ Microsoft PowerShell คือการทำงานอัตโนมัติ และอาร์เรย์มีบทบาทสำคัญในเรื่องนั้น ออบเจ็กต์ที่ส่งคืนโดย PowerShell cmdlets สามารถจัดเก็บไว้ในอาร์เรย์และวนซ้ำได้ ช่วยให้สามารถดำเนินการงานตามลำดับได้โดยอัตโนมัติ ทำให้การดูแลระบบง่ายขึ้นอย่างมาก
.