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