เราได้กล่าวถึงการใช้ตัวแปรใน Bash ก่อนหน้านี้ - บทความนี้จะอธิบาย Bash array ตัวแปรและให้ตัวอย่างการใช้งาน
อาร์เรย์คืออะไร
อาร์เรย์เป็นตัวแปรประเภทหนึ่งที่สามารถเก็บค่าได้หลายค่า เป็นรายการค่าที่คุณสามารถวนซ้ำและดำเนินการกับแต่ละค่าได้
ตัวอย่างเช่น คุณอาจต้องการดำเนินการกับรายการไฟล์ โดยการจัดเก็บรายการนั้นเป็นอาร์เรย์ คุณสามารถวนซ้ำชื่อไฟล์ในนั้นและดำเนินการกับแต่ละรายการได้
อาร์เรย์จะได้รับการจัดทำดัชนี โดยตำแหน่งของแต่ละรายการในอาร์เรย์จะแสดงด้วยตัวเลขเริ่มต้นที่ 0 .
อาร์เรย์ทุบตีไม่ต้องการให้องค์ประกอบอาร์เรย์ได้รับการจัดทำดัชนี ต่อเนื่องกัน – หรืออยู่ติดกันโดยไม่มีช่องว่าง – คุณสามารถมีค่าที่ตำแหน่งอาร์เรย์ 0, 3, 17 โดยไม่มีค่าระหว่างนั้นเป็นต้น
ดูข้อมูลเพิ่มเติมเกี่ยวกับอาร์เรย์ Bash ได้ที่ Linux Documentation Project
การสร้าง Bash Array
อาร์เรย์ทุบตีสามารถมีตัวแปรทุบตีประเภทใดก็ได้ ไม่ว่าจะเป็นพาธ สตริง ตัวเลข หรือแม้แต่อาร์เรย์อื่นๆ
ทำไมคุณควรตัดเส้นทางไฟล์เป็นสตริงในเชลล์สคริปต์ของคุณ
มีหลายวิธีในการประกาศอาร์เรย์ ดังรายละเอียดด้านล่าง
ประกาศทางอ้อม
อาร์เรย์สามารถประกาศโดยอ้อมโดยการกำหนดค่าขององค์ประกอบอาร์เรย์ – อาร์เรย์จะถูกสร้างขึ้นพร้อมกับองค์ประกอบอาร์เรย์ด้วยค่าที่กำหนด
ARRAYNAME[INDEX]=VALUE
ตัวอย่างเช่น:
#!/bin/bash peopleArray[3]="Tom"
อาร์เรย์ peopleArray จะถูกสร้างขึ้นโดยอัตโนมัติ (ทางอ้อม) เมื่อกำหนดค่าในอาร์เรย์ – ในกรณีนี้ ค่า “Tom” จะถูกกำหนดให้กับดัชนี 3 ใน peopleArray ที่สร้างขึ้นใหม่ .
ประกาศโดยตรง
คำสั่งประกาศยังสามารถใช้เพื่อกำหนดอาร์เรย์:
declare -a ARRAYNAME
ตัวอย่างเช่น:
declare -a peopleArray
สิ่งนี้จะสร้างอาร์เรย์ว่างที่เรียกว่า peopleArray .
การสร้างผ่านการกำหนดแบบผสม
นี่เป็นวิธีที่คุณอาจจะใช้บ่อยที่สุด มันสร้างอาร์เรย์ที่มีค่าที่กำหนดไว้แล้ว
ARRAYNAME=(value1 value2 ...)
สิ่งนี้กำหนดค่าของอาร์เรย์ให้กับชื่อตัวแปร ค่าอาร์เรย์อยู่ใน () (วงเล็บมาตรฐาน) และคั่นด้วยช่องว่าง ค่าที่มีช่องว่างควรยกมา
ตัวอย่างเช่น:
peopleArray=("Tom", "Bill", "Theodore Baker Sr.")
การกำหนดค่าให้กับอาร์เรย์
การเพิ่มค่าใหม่ให้กับส่วนท้ายของอาร์เรย์
หากต้องการเพิ่มค่าให้กับอาร์เรย์ ให้กำหนดค่าโดยไม่ได้ระบุดัชนี:
ARRAYNAME[]=VALUE
ตัวอย่างเช่น:
peopleArray[]="Tony"
การแทนที่ค่าในอาร์เรย์
หากต้องการแทนที่ค่า ให้เขียนทับค่าที่ดัชนีของค่าปัจจุบัน
ตัวอย่างเช่น หากคุณมีอาร์เรย์ที่มีค่าดัชนี 7 ซึ่งคุณต้องการแทนที่:
peopleArray[7]="Tony"
การลบค่าในอาร์เรย์
ลบค่าจากอาร์เรย์โดยใช้ unset คำสั่งและระบุดัชนีอาร์เรย์:
unset ARRAYNAME[INDEX]
ตัวอย่างเช่น:
unset peopleArray[1]
…จะลบค่าที่สองในอาร์เรย์ peopleArray .
การเข้าถึงค่าอาร์เรย์
ในการเข้าถึงค่าในอาร์เรย์ คุณต้องใช้ วงเล็บปีกกา – มิฉะนั้น Bash จะไม่ตีความวงเล็บที่มีดัชนีอาร์เรย์อย่างถูกต้อง:
echo ${ARRAYNAME[INDEX]}
ตัวอย่างเช่น:
#!/bin/bash peopleArray=("Tom", "Bill", "Theodore Baker Sr.") echo ${peopleArray[0]}
…จะส่งออก:
Tom
โดยที่บรรทัดสุดท้ายคือ:
echo $peopleArray[0]
อาร์เรย์การวนซ้ำ
สิ่งที่พบบ่อยที่สุดที่คุณจะทำกับอาร์เรย์คือการวนซ้ำเพื่อดำเนินการกับแต่ละองค์ประกอบ เราก้าวไปข้างหน้าและได้กล่าวถึงบทความนี้แล้ว