Unix / Linux - การใช้เชลล์อาร์เรย์
ในบทนี้เราจะพูดถึงวิธีการใช้เชลล์อาร์เรย์ใน Unix ตัวแปรเชลล์มีความสามารถเพียงพอที่จะเก็บค่าเดียว ตัวแปรเหล่านี้เรียกว่าตัวแปรสเกลาร์
เชลล์รองรับตัวแปรประเภทอื่นที่เรียกว่า array variable. ซึ่งสามารถเก็บค่าได้หลายค่าในเวลาเดียวกัน อาร์เรย์จัดเตรียมวิธีการจัดกลุ่มชุดของตัวแปร แทนที่จะสร้างชื่อใหม่สำหรับแต่ละตัวแปรที่จำเป็นคุณสามารถใช้ตัวแปรอาร์เรย์เดียวที่เก็บตัวแปรอื่น ๆ ทั้งหมด
กฎการตั้งชื่อทั้งหมดที่กล่าวถึงสำหรับตัวแปรเชลล์จะสามารถใช้ได้ในขณะที่ตั้งชื่ออาร์เรย์
การกำหนดค่าอาร์เรย์
ความแตกต่างระหว่างตัวแปรอาร์เรย์และตัวแปรสเกลาร์สามารถอธิบายได้ดังนี้
สมมติว่าคุณพยายามแทนชื่อนักเรียนหลาย ๆ คนเป็นชุดของตัวแปร ตัวแปรแต่ละตัวเป็นตัวแปรสเกลาร์ดังนี้ -
NAME01="Zara"
NAME02="Qadir"
NAME03="Mahnaz"
NAME04="Ayan"
NAME05="Daisy"
เราสามารถใช้อาร์เรย์เดียวเพื่อเก็บรายชื่อที่กล่าวมาทั้งหมด ต่อไปนี้เป็นวิธีที่ง่ายที่สุดในการสร้างตัวแปรอาร์เรย์ สิ่งนี้ช่วยกำหนดค่าให้กับดัชนีตัวใดตัวหนึ่ง
array_name[index]=value
ที่นี่array_nameคือชื่อของอาร์เรย์ดัชนีคือดัชนีของรายการในอาร์เรย์ที่คุณต้องการตั้งค่าและค่าคือค่าที่คุณต้องการตั้งค่าสำหรับรายการนั้น
ดังตัวอย่างคำสั่งต่อไปนี้ -
NAME[0]="Zara"
NAME[1]="Qadir"
NAME[2]="Mahnaz"
NAME[3]="Ayan"
NAME[4]="Daisy"
หากคุณกำลังใช้ไฟล์ ksh เชลล์นี่คือไวยากรณ์ของการเริ่มต้นอาร์เรย์ -
set -A array_name value1 value2 ... valuen
หากคุณกำลังใช้ไฟล์ bash เชลล์นี่คือไวยากรณ์ของการเริ่มต้นอาร์เรย์ -
array_name=(value1 ... valuen)
การเข้าถึงค่าอาร์เรย์
หลังจากคุณตั้งค่าตัวแปรอาร์เรย์แล้วคุณจะเข้าถึงได้ดังนี้ -
${array_name[index]}
ที่นี่array_nameคือชื่อของอาร์เรย์และดัชนีคือดัชนีของค่าที่จะเข้าถึง ต่อไปนี้เป็นตัวอย่างเพื่อทำความเข้าใจแนวคิด -
#!/bin/sh
NAME[0]="Zara"
NAME[1]="Qadir"
NAME[2]="Mahnaz"
NAME[3]="Ayan"
NAME[4]="Daisy"
echo "First Index: ${NAME[0]}"
echo "Second Index: ${NAME[1]}"
ตัวอย่างข้างต้นจะสร้างผลลัพธ์ต่อไปนี้ -
$./test.sh
First Index: Zara
Second Index: Qadir
คุณสามารถเข้าถึงรายการทั้งหมดในอาร์เรย์ด้วยวิธีใดวิธีหนึ่งดังต่อไปนี้ -
${array_name[*]}
${array_name[@]}
ที่นี่ array_name คือชื่อของอาร์เรย์ที่คุณสนใจตัวอย่างต่อไปนี้จะช่วยให้คุณเข้าใจแนวคิด -
#!/bin/sh
NAME[0]="Zara"
NAME[1]="Qadir"
NAME[2]="Mahnaz"
NAME[3]="Ayan"
NAME[4]="Daisy"
echo "First Method: ${NAME[*]}"
echo "Second Method: ${NAME[@]}"
ตัวอย่างข้างต้นจะสร้างผลลัพธ์ต่อไปนี้ -
$./test.sh
First Method: Zara Qadir Mahnaz Ayan Daisy
Second Method: Zara Qadir Mahnaz Ayan Daisy