Android

ทุบตีอาร์เรย์

01 Shell Script Arrays Tutorial

01 Shell Script Arrays Tutorial

สารบัญ:

Anonim

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

เราจะครอบคลุม 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}"

0 1 2 3

ความยาวอาร์เรย์

ในการรับความยาวของอาร์เรย์ให้ใช้แบบฟอร์มต่อไปนี้:

${#array_name} ไวยากรณ์เป็นเช่นเดียวกับเมื่ออ้างอิงองค์ประกอบทั้งหมดด้วยการเพิ่มของตัวละคร # ก่อนชื่ออาร์เรย์

## declare the array declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") ## array Length echo ${#my_array}

4

วนซ้ำผ่านอาร์เรย์

วิธีทั่วไปในการวนซ้ำแต่ละไอเท็มในอาเรย์คือการใช้ลูป 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}"

Hydrogen Helium Beryllium

ข้อสรุป

เราอธิบายวิธีสร้างอาร์เรย์ที่มีการจัดทำดัชนีและเชื่อมโยงเป็นตัวเลข นอกจากนี้เรายังแสดงวิธีการวนซ้ำในอาร์เรย์คำนวณความยาวของอาร์เรย์และเพิ่มและลบองค์ประกอบ

bash terminal