สิ่งที่เป็นทุบตีพจนานุกรมบน Linux และวิธีที่คุณใช้พวกเขา?

Jun 16, 2025
Linux
Fatmawati Achmad Zaenuri / Shutterstock.com

พจนานุกรมทุบตีให้แผนที่แฮชและอาร์เรย์เชื่อมโยงในสคริปต์เปลือก Linux เราจะแสดงวิธีการใช้โครงสร้างข้อมูลที่ทรงพลังและมีประโยชน์เหล่านี้ในสคริปต์เปลือก Linux ของคุณเอง

ดอกกุหลาบโดยชื่ออื่น ๆ

ชื่อทางการสำหรับพจนานุกรมคืออาร์เรย์เชื่อมโยง พวกเขายังเรียกว่าตารางแฮชและแผนที่แฮช พวกเขาเป็นโครงสร้างข้อมูลที่ทำงานคล้ายกับอาร์เรย์ปกติ แต่มีความแตกต่างอย่างมีนัยสำคัญ

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

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

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

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

Bash 4.0 หรือสูงกว่า

สนับสนุนอาร์เรย์ที่เชื่อมโยงกัน เปลือกหอยทุบตี รุ่น 4.0 หรือสูงกว่า หากคุณใช้การกระจาย Linux ปัจจุบันคุณควรจะปรับ ในการตรวจสอบรุ่น BASH ของคุณให้ใช้คำสั่งนี้:

 Bash --version 

เครื่องที่ใช้ในการวิจัยบทความนี้มีการติดตั้ง Bash 5.1.4 ดังนั้นเราจึงดีที่จะไป

หลักการพื้นฐาน

ในการสร้างอาร์เรย์ที่เชื่อมโยงกับบรรทัดคำสั่งเทอร์มินัลหรือในสคริปต์เราใช้คำสั่ง Bash Declare NS -NS (เชื่อมโยง) ตัวเลือกบอก Bash ว่านี่จะเป็นอาร์เรย์ที่เชื่อมโยงกันและไม่ใช่อาร์เรย์ที่จัดทำดัชนี

 ประกาศตัวย่อของ 

สิ่งนี้สร้างอาร์เรย์แบบเชื่อมโยงที่เรียกว่า "ตัวย่อ"

หากต้องการใส่ข้อมูลไว้ในอาร์เรย์ของเราเราต้องให้คำหลักและค่านิยม เราสามารถทำได้โดยใช้รูปแบบนี้:

 อาร์เรย์ชื่อ [คีย์] = ค่า 

ลองเพิ่มองค์ประกอบอาร์เรย์กัน:

 Acronyms [ACK] = การตอบรับ 
 Acronyms [BGP] = "Protocol เกตเวย์ชายแดน" 
 ตัวย่อ [CIDR] = "การกำหนดเส้นทางอินเตอร์โดเมนแบบคลาสสิก" 
 Acronyms [DHCP] = "โปรโตคอลการกำหนดค่าโฮสต์แบบไดนามิก" 
 Acronyms [EOF] = "สิ้นสุดของเฟรม" 

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

ในการดึงค่าจากอาร์เรย์เราใช้คำสั่งในรูปแบบนี้:

 $ {array-name [key]} 

เราสามารถใช้ Echo เพื่อส่งเอาต์พุตไปยังหน้าต่างเทอร์มินัล:

 Echo $ {ย่อ [ACK]} 
 ECHO $ ​​{ย่อ [DHCP]} 

การใช้ลูป

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

เราสร้างอาร์เรย์โดยใช้ ประกาศ คำสั่ง (เดียวกัน -NS ตัวเลือกที่เป็นมาก่อน) แต่เราให้คำหลักและค่านิยมเป็นรายการในบรรทัดคำสั่ง

 ประเทศประกาศ -A = ([ALB] = แอลเบเนีย [BHR] = บาห์เรน [CMR] = แคเมอรูน [DNK] = เดนมาร์ก [EGY] = อียิปต์) 

ชื่ออาร์เรย์คือ“ประเทศ” และมีการเชื่อมต่อไปยังรายการค่าด้วยเครื่องหมายเท่ากับ” = " รายการค่าจะถูกห่อในวงเล็บ“ () ” และคำหลักแต่ละห่อในวงเล็บ“ [] “ ทราบว่ามีเครื่องหมายจุลภาคไม่มีการแยกค่า หากคุณมีค่าสตริงที่มีช่องว่างคุณจะต้องห่อไว้ในเครื่องหมายคำพูด

ที่จะทำให้อาเรย์กลับคำหลักที่แทนค่าเพิ่มเครื่องหมายอัศเจรีย์“ ! ” หน้าชื่ออาร์เรย์ ที่สัญลักษณ์“ @ ” สามารถนำมาใช้เป็นสัญลักษณ์แทนความหมายองค์ประกอบมากมายทั้งหมด

นี้ สำหรับ ห่วงจะแสดงรายการทั้งหมดของคำหลัก:

 สำหรับการสำคัญในการ "$ {ประเทศ [@]!}"; ทำ $ คีย์ก้อง; ทำ 

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

นอกจากนี้เรายังสามารถใช้การขยายตัวพารามิเตอร์รายการทั้งหมดของคำหลัก พวกเขาจะได้รับการจดทะเบียนในบรรทัดเดียวไม่ได้ต่อหนึ่งบรรทัด

 echo "$ {! ประเทศ [@]}" 
 echo "$ {! ย่อ [@]}" 

เราสามารถขยายของเรา สำหรับ ห่วงพิมพ์คำหลักและค่านิยมในเวลาเดียวกัน

 สำหรับการสำคัญในการ "$ {ย่อ [@]!}"; ทำ echo "$ คีย์ - $ {ย่อ [$ คีย์]}"; ทำ 

ถ้าเราต้องการที่จะทราบว่าหลายองค์ประกอบที่มีอยู่ในอาร์เรย์เราสามารถใช้กัญชา“#” ในหน้าชื่ออาร์เรย์แทนเครื่องหมายอัศเจรีย์

 echo "$ {! ประเทศ [@]}" 
 echo "$ {! ย่อ [@]}" 

การตรวจสอบว่าอาร์เรย์ธาตุที่มีอยู่

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

เราสามารถตรวจสอบการปรากฏตัวขององค์ประกอบอาร์เรย์โดยใช้“ + _ ” ผู้ประกอบการ หมายเหตุที่ว่านี้เกิดขึ้นหลังจากคำหลักที่ไม่ได้อยู่ในหน้าชื่ออาร์เรย์เช่นผู้ประกอบการก่อนหน้านี้เราเคยเห็น

 ถ้า [$ {ย่อ [EOF] + _}]; แล้ว echo "พบ"; อื่น echo "ไม่พบ"; ไฟ 
 ถ้า [$ {ย่อ [FTP] + _}]; แล้ว echo "พบ"; อื่น echo "ไม่พบ"; ไฟ 

องค์ประกอบอาร์เรย์ที่มีคำว่า“EOF” พบในอาร์เรย์ แต่องค์ประกอบอาร์เรย์ที่มีคำว่า“FTP” ไม่ได้เป็น

เพิ่มองค์ประกอบมากมาย

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

ในการเพิ่มองค์ประกอบใหม่ไปยังอาร์เรย์ที่เราใช้“ + = ” ผู้ประกอบการ

 ประเทศ + = ([FJI] = ฟิจิ) 
 echo "$ (# ประเทศ [@]}" 
 echo $ {ประเทศ [FJI]} 

จำนวนขององค์ประกอบในอาร์เรย์คือตอนนี้หกและค้นหาคำหลักใหม่พบว่าองค์ประกอบอาร์เรย์และผลตอบแทนคุ้มค่า

การลบองค์ประกอบมากมายและอาร์เรย์

NS ไม่มีการตั้งค่า คำสั่งที่ใช้ในการลบองค์ประกอบมากมาย หากคำหลักมีช่องว่างในนั้นห่อไว้ในเครื่องหมายคำพูด

 ล้างคำย่อ [EOF] 
 ถ้า [$ {ย่อ [EOF] + _}]; แล้ว echo "พบ"; อื่น echo "ไม่พบ"; ไฟ 

ในการลบอาร์เรย์ทั้งหมดใช้ ไม่มีการตั้งค่า ที่มีชื่อของอาร์เรย์

 ประเทศล้าง 

การใช้ตัวแปรกับอาร์เรย์

ใช้ตัวแปรที่มีเชื่อมโยงอาร์เรย์ตรงไปตรงมา ในตัวอย่างนี้เราจะตั้งค่าคีย์ตัวแปรสตริง“EOF.” เราจะใช้ตัวแปรเมื่อเราเพิ่มองค์ประกอบอาร์เรย์ใหม่เพื่ออาร์เรย์ ที่จริงเรากำลังแทนที่องค์ประกอบอาร์เรย์ที่เราลบก่อนหน้านี้

เราจะดึงองค์ประกอบอาร์เรย์ใหม่โดยเรียกใช้กับคำหลักใหม่และโดยใช้ตัวแปร หากคำหลักมีช่องว่างคุณจะต้องปิดชื่อตัวแปรในเครื่องหมายอัญประกาศ

 Key = EOF 
 ตัวย่อ [$ key] = "สิ้นสุดของเฟรม" 
 Echo $ {ย่อ [EOF]} 
 Echo $ {ย่อ [$ key]} 

รับความคิดสร้างสรรค์

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

 ประกาศ - ข้อมูลจำเพาะของ 
 ข้อมูลจำเพาะ [CPU] = "Dual Core AMD Ryzen 5 3600" 
 ข้อมูลจำเพาะ [Speed] = "3600 MHz" 
 ข้อมูลจำเพาะ [เคอร์เนล] = "5.11.0-17-generic x86_64" 
 ข้อมูลจำเพาะ [MEM] = "1978.5 MIB" 
 ข้อมูลจำเพาะ [เก็บข้อมูล] = "32 Gib" 
 ข้อมูลจำเพาะ [เชลล์] = "Bash" 
 echo $ {specification [cpu]} 

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


Linux - บทความยอดนิยม

มีอะไรใหม่ใน GNOME 40

Linux Jul 23, 2025

มูลนิธิ GNOME GNOME 40 มีมากกว่าโครงการหมายเลขใหม่ พร้อมกับรูปล�..


วิธีการกำหนดค่าหรือปิดการใช้งานลินุกซ์มิ้นท์ปรับปรุงการแจ้งเตือน

Linux Jul 9, 2025

มีการแจ้งเตือนการอัปเดตที่น่ารำคาญของ Linux Mint เพียงพอหรือไม่ หรือบาง�..


คืออะไร“ราก” บนลินุกซ์?

Linux Jul 7, 2025

Fatmawati Achmad Zaenuri / Shutterstock.com ผู้ใช้รูทเป็นนิติบุคคลที่ทรงพลังที่สุ�..


วิธีการออกจากระบบ Mac ของคุณโดยใช้เทอร์

Linux Aug 8, 2025

Apple ทำให้ง่ายต่อการออกจากระบบ Mac ของคุณด้วยตัวเลือกในแถบเมนูของเดส�..


เล่นเกมพื้นเมืองบน Linux อาจจะตายและไม่เป็นไร

Linux Sep 27, 2025

DC Studio / Shutterstock.com NS ดาดฟ้าอบไอน้ำ ประกาศในเดือนสิงหาคม 2021 มีล�..


Linux อายุ 30: โครงการงานอดิเรกเอาชนะโลกได้อย่างไร

Linux Sep 17, 2025

Larry Ewing และ Gimp บน 17 กันยายน 2534 Linus Torvalds เปิดตัวเคอร์เนล Linux (เวอร์�..


ข้อเสียของการสลับไปที่ Linux คืออะไร

Linux Oct 27, 2025

Larry Ewing และ Gimp รจนาลินุกซ์ (เหมือนตัวเอง) มีความรวดเร็วในการช..


วิธีแสดงรายการบริการ Linux ด้วย SystemCTL

Linux Oct 18, 2025

คอมพิวเตอร์ Linux ของคุณอาศัยงานพื้นหลังจำนวนมากที่เรียกว่าบริการหรือ..


หมวดหมู่