01 Shell Script Arrays Tutorial
สารบัญ:
- Bash Arrays
- การสร้าง Bash Arrays
- การสร้างอาร์เรย์ที่ทำดัชนีตัวเลข
- สร้างอาเรย์แบบเชื่อมโยง
- การปฏิบัติงานของอาเรย์
- องค์ประกอบอ้างอิง
- ความยาวอาร์เรย์
- วนซ้ำผ่านอาร์เรย์
- เพิ่มองค์ประกอบใหม่
- ลบองค์ประกอบ
- ข้อสรุป
อาร์เรย์เป็นหนึ่งในโครงสร้างข้อมูลที่ใช้มากที่สุดและพื้นฐาน คุณสามารถคิดว่าอาเรย์เป็นตัวแปรที่สามารถเก็บตัวแปรหลายตัวไว้ภายในได้
เราจะครอบคลุม Bash arrays และอธิบายวิธีใช้ใน Bash script ของคุณ
Bash Arrays
Bash รองรับประเภทอาเรย์แบบดัชนีและเชื่อมโยงแบบตัวเลขหนึ่งมิติ อาร์เรย์ตัวเลขมีการอ้างอิงโดยใช้จำนวนเต็มและการเชื่อมโยงจะอ้างอิงโดยใช้สตริง
อาร์เรย์ที่จัดทำดัชนีจำนวนมากสามารถเข้าถึงได้จากจุดสิ้นสุดโดยใช้ดัชนีเชิงลบดัชนี
-1
อ้างอิงองค์ประกอบสุดท้าย ดัชนีไม่จำเป็นต้องต่อเนื่องกัน
แตกต่างจากภาษาโปรแกรมส่วนใหญ่องค์ประกอบอาร์เรย์ Bash ไม่จำเป็นต้องเป็นชนิดข้อมูลเดียวกัน คุณสามารถสร้างอาร์เรย์ที่มีทั้งสตริงและตัวเลข
Bash ไม่สนับสนุนอาร์เรย์หลายมิติและคุณไม่สามารถมีองค์ประกอบอาร์เรย์ที่เป็นอาร์เรย์ได้เช่นกัน
ไม่มีการ จำกัด จำนวนองค์ประกอบสูงสุดที่สามารถเก็บไว้ในอาร์เรย์ได้
การสร้าง Bash Arrays
อาร์เรย์ใน Bash สามารถเริ่มต้นได้ในรูปแบบที่แตกต่างกัน
การสร้างอาร์เรย์ที่ทำดัชนีตัวเลข
ตัวแปร Bash นั้นถูกยกเลิกการพิมพ์ตัวแปรใด ๆ สามารถใช้เป็นอาร์เรย์ที่จัดทำดัชนีโดยไม่ต้องประกาศ
ในการประกาศอาร์เรย์ให้ใช้ประกาศ buildin:
declare -a array_name
วิธีหนึ่งในการสร้างอาร์เรย์ที่จัดทำดัชนีคือโดยใช้แบบฟอร์มต่อไปนี้:
array_name=value_1 array_name=value_2 array_name=value_n
โดยที่
index_*
เป็นจำนวนเต็มบวก
อีกวิธีหนึ่งในการสร้างอาร์เรย์ตัวเลขคือการระบุรายการองค์ประกอบภายในวงเล็บคั่นด้วยช่องว่าง:
array_name=(element_1 element_2 element_N)
เมื่ออาร์เรย์ถูกสร้างขึ้นโดยใช้แบบฟอร์มด้านบนการทำดัชนีเริ่มต้นที่ศูนย์เช่นองค์ประกอบแรกมีดัชนีเป็น
0
สร้างอาเรย์แบบเชื่อมโยง
ไม่เหมือนกับการจัดทำดัชนีตัวเลขต้องมีการประกาศอาร์เรย์ที่เชื่อมโยงก่อนที่จะสามารถใช้งานได้
ในการประกาศอาเรย์แบบเชื่อมโยงให้ใช้ตัว
declare
builtin พร้อมตัวเลือก
-A
(ตัวพิมพ์ใหญ่):
declare -A array_name
อาร์เรย์ที่เกี่ยวข้องสามารถสร้างขึ้นได้โดยใช้แบบฟอร์มต่อไปนี้:
declare -A array_name array_name=value_foo array_name=value_bar array_name=value_xyz
โดยที่
index_*
สามารถเป็นสตริงใดก็ได้
คุณสามารถสร้างอาเรย์แบบเชื่อมโยงได้โดยใช้แบบฟอร์มด้านล่าง:
declare -A array_name array_name=(=value_foo =value_bar =value_xyz)
การปฏิบัติงานของอาเรย์
ไวยากรณ์อาร์เรย์ของ Bash อาจดูแปลก ๆ เล็กน้อยในตอนแรก แต่มันจะเหมาะสมกว่าเมื่อคุณอ่านบทความนี้
องค์ประกอบอ้างอิง
ในการอ้างอิงองค์ประกอบเดียวคุณต้องรู้ดัชนีองค์ประกอบ
องค์ประกอบใด ๆ ที่สามารถอ้างอิงได้โดยใช้ไวยากรณ์ต่อไปนี้:
${array_name}
ไวยากรณ์สำหรับการเข้าถึงองค์ประกอบอาร์เรย์คล้ายกับไวยากรณ์ของภาษาโปรแกรมส่วนใหญ่ วงเล็บปีกกา
${}
จำเป็นต้องมีเพื่อหลีกเลี่ยงโอเปอเรเตอร์การขยายชื่อไฟล์ของเชลล์
ลองพิมพ์องค์ประกอบด้วยดัชนี
1
:
## declare the array declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") ## print element echo ${my_array}
Helium
## declare the array declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") ## print all elements echo "${my_array}"
Hydrogen Helium Lithium Beryllium
ข้อแตกต่างระหว่าง
@
และ
*
คือเมื่อแบบฟอร์ม
${my_array}
ล้อมรอบด้วยเครื่องหมายคำพูดคู่ ในกรณีนี้
*
ขยายไปเป็นคำเดียวที่องค์ประกอบอาร์เรย์จะถูกคั่นด้วยช่องว่าง
@
ขยายแต่ละองค์ประกอบแถวลำดับเป็นคำที่แยกต่างหาก สิ่งนี้มีความสำคัญอย่างยิ่งเมื่อใช้แบบฟอร์มเพื่อไม่รู้หนังสือผ่านองค์ประกอบอาเรย์
หากต้องการพิมพ์ปุ่มของอาร์เรย์ให้เพิ่ม
!
ผู้ประกอบการก่อนที่ชื่ออาร์เรย์:
${!array_name}
นี่คือตัวอย่าง:
## declare the array declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") ## print all elements echo "${!my_array}"
ความยาวอาร์เรย์
ในการรับความยาวของอาร์เรย์ให้ใช้แบบฟอร์มต่อไปนี้:
${#array_name}
ไวยากรณ์เป็นเช่นเดียวกับเมื่ออ้างอิงองค์ประกอบทั้งหมดด้วยการเพิ่มของตัวละคร
#
ก่อนชื่ออาร์เรย์
## declare the array declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") ## array Length echo ${#my_array}
วนซ้ำผ่านอาร์เรย์
วิธีทั่วไปในการวนซ้ำแต่ละไอเท็มในอาเรย์คือการใช้ลูป for:
declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") ## Array Loop for i in "${my_array}" do echo "$i" done
โค้ดด้านบนจะวนซ้ำอาร์เรย์และพิมพ์แต่ละองค์ประกอบในบรรทัดใหม่:
Hydrogen Helium Lithium Beryllium
นี่คือตัวอย่างวิธีพิมพ์คีย์และค่าทั้งหมด:
declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") ## Array Loop for i in "${!my_array}" do echo "$i" "${my_array}" done
0 Hydrogen 1 Helium 2 Lithium 3 Beryllium
อีกวิธีในการวนลูปผ่านอาเรย์คือการรับความยาวของอาเรย์และใช้ลูป
C style
:
declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") # Length of the array length=${#my_array} # Array Loop for ((i=0; i < ${length}; i++)) do echo $i ${my_array} done
0 Hydrogen 1 Helium 2 Lithium 3 Beryllium
เพิ่มองค์ประกอบใหม่
ในการเพิ่มองค์ประกอบใหม่ลงในอาร์เรย์ bash และระบุดัชนีให้ใช้แบบฟอร์มต่อไปนี้:
my_array="New Element"
นี่คือตัวอย่าง:
declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") ## add new element my_array="Aluminum" ## print all elements echo "${my_array}"
Hydrogen Helium Lithium Beryllium Aluminum
อีกวิธีในการเพิ่มองค์ประกอบใหม่ให้กับอาร์เรย์โดยไม่ระบุดัชนีคือการใช้เครื่องหมาย
+=
คุณสามารถเพิ่มองค์ประกอบหนึ่งหรือหลายองค์ประกอบ:
declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") ## add new elements my_array+=(Cobalt Nickel) ## print all elements echo "${my_array}"
Hydrogen Helium Lithium Beryllium Cobalt Nickel
ลบองค์ประกอบ
ในการลบองค์ประกอบเดียวคุณจะต้องรู้ดัชนีองค์ประกอบ องค์ประกอบสามารถลบออกได้โดยใช้คำสั่ง
unset
:
unset my_array
ลองดูตัวอย่าง:
declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") ## remove element unset my_array ## print all elements echo "${my_array}"
ข้อสรุป
เราอธิบายวิธีสร้างอาร์เรย์ที่มีการจัดทำดัชนีและเชื่อมโยงเป็นตัวเลข นอกจากนี้เรายังแสดงวิธีการวนซ้ำในอาร์เรย์คำนวณความยาวของอาร์เรย์และเพิ่มและลบองค์ประกอบ
bash terminal