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