ตัวแปรเป็นโครงสร้างข้อมูลพื้นฐานที่สุดในการเข้ารหัสทุกประเภท แต่ตัวแปรเดียวแทบจะไม่เพียงพอสำหรับวัตถุประสงค์ส่วนใหญ่ โดยเฉพาะอย่างยิ่งเมื่อต้องจัดการกับอัลกอริธึมที่ซับซ้อนมากขึ้น

นั่นคือที่มาของอาร์เรย์ ไม่ว่าจะเป็น 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 สามารถจัดเก็บในอาร์เรย์และทำซ้ำได้ ซึ่งช่วยให้ทำงานตามลำดับได้โดยอัตโนมัติ ทำให้การดูแลระบบง่ายขึ้นมาก

Categories: IT Info