تمنحك قواميس Bash خرائط التجزئة والمصفوفات الترابطية في البرامج النصية لـ Linux shell. سنوضح لك كيفية استخدام هياكل البيانات القوية والمفيدة هذه في البرامج النصية لشل Linux الخاصة بك.
وردة بأي اسم آخر
الاسم الرسمي للقواميس هو المصفوفات الترابطية. وتسمى أيضًا جداول التجزئة وخرائط التجزئة. إنها بنية بيانات تعمل بطريقة مماثلة للمصفوفة العادية ، ولكن مع اختلاف واحد مهم.
المصفوفة هي مجموعة من قيم البيانات الموجودة في بنية البيانات. للوصول إلى أي من قيم البيانات ، والتي تُعرف باسم عناصر المصفوفة ، يجب أن تعرف موقعها في المصفوفة. يُعرف موضع عنصر المصفوفة في المصفوفة بالفهرس ، لذلك تُعرف هذه الأنواع من المصفوفات بالمصفوفات المفهرسة. وهي أكثر أنواع المصفوفات استخدامًا.
ومع ذلك ، لديهم جانب سلبي. كيف يمكنك الوصول إلى عنصر مصفوفة إذا كنت لا تعرف موقعه داخل القائمة؟ يجب عليك تشغيل جميع العناصر في المصفوفة ، واختبارًا لمعرفة ما إذا كانت القيمة في هذا الموقع هي ما تبحث عنه.
المصفوفات النقابية تتغلب على هذه المشكلة. لا تستخدم الأعداد الصحيحة لتعريف عناصر المصفوفة بشكل فريد. يستخدمون كلمات فريدة تعرف بالكلمات الرئيسية. يمكنك استرداد قيمة عنصر المصفوفة باستخدام الكلمة الأساسية الخاصة به ، بغض النظر عن مكانه داخل المصفوفة. باستخدام مصفوفة مفهرسة ، تكون الأعداد الصحيحة التي تمثل المواضع داخل المصفوفة بترتيب تصاعدي. يمكن أن تكون الكلمات الرئيسية في مصفوفة ترابطية بأي ترتيب.
يمكنك البحث عن قيمة في مصفوفة ترابطية من خلال البحث بكلماتها الرئيسية. إن العثور على كلمة واسترجاع القيمة المرتبطة بها يحاكي البحث عن كلمة في القاموس وإيجاد معناها. لهذا السبب تُعرف المصفوفات الترابطية بالقواميس.
باش 4.0 المتفوق
صفائف النقابي متوافقة مع و الإصدار 4.0 أو أعلى من قذيفة باش . إذا كنت تستخدم توزيعة Linux الحالية ، فيجب أن تكون على ما يرام. للتحقق من إصدار Bash الخاص بك ، استخدم هذا الأمر:
bash --versión
تم تثبيت Bash 5.1.4 على الجهاز المستخدم للبحث في هذه المقالة ، لذلك نحن على ما يرام.
المبادئ الأساسية
لإنشاء مصفوفة ترابطية على سطر الأوامر الطرفي أو في نص برمجي ، نستخدم الأمر Bash للإعلان. و -A
يقول خيار (النقابي) باش أنه سيكون مجموعة النقابي وليس مجموعة المفهرسة.
declarar -A acrónimos
يؤدي هذا إلى إنشاء مصفوفة ترابطية تسمى “الاختصارات”.
لوضع بعض البيانات في صفيفنا ، نحتاج إلى توفير كلمات رئيسية وقيم. يمكننا القيام بذلك باستخدام هذا التنسيق:
nombre-matriz [clave] = Valor
دعنا نضيف بعض عناصر المصفوفة:
acrónimos [ACK] = Reconocimiento
acronyms [BGP] = "Protocolo de puerta de enlace fronteriza"
acrónimos [CIDR] = "Enrutamiento entre dominios sin clases"
acrónimos [DHCP] = "Protocolo de configuración dinámica de host"
acrónimos [EOF] = "Fin del cuadro"
تحدد هذه الأوامر خمسة عناصر مصفوفة. لاحظ أن القيم محاطة بعلامات اقتباس إذا كانت هناك مسافات في القيمة. تم إدخال كلماتنا الرئيسية بترتيب أبجدي ، ولكن يمكن إدخالها بأي ترتيب تريده. يجب أن تكون الكلمات الرئيسية فريدة. إذا حاولت إنشاء إدخالين باستخدام نفس الكلمة الأساسية ، فستحل القيمة الثانية التي تدخلها محل الأول. سيظل يحتوي على إدخال واحد فقط مع هذه الكلمة الأساسية وسيتم ربطه بالقيمة الثانية التي أضفتها.
لاسترداد القيم من المصفوفة ، نستخدم أوامر بهذا التنسيق:
$ {nombre-matriz [clave]}
يمكننا استخدام echo لإرسال الإخراج إلى النافذة الطرفية:
echo $ {acrónimos [ACK]}
echo $ {acrónimos [DHCP]}
استخدم الحلقات
المصفوفات مناسبة بشكل جيد لاستخدامها في الحلقات. المصفوفات الترابطية ليست استثناء. توفر الحلقات طرقًا فعالة لاستدعاء سلسلة من الإجراءات بدون أقسام التعليمات البرمجية المتكررة. قبل النظر إلى الحلقات ، هناك طريقة فعالة لتعريف المصفوفات.
نقوم بإنشاء المصفوفات باستخدام declare
الأمر (نفس -A
الخيار السابق) ، لكننا نقدم الكلمات الرئيسية والقيم كقائمة في سطر الأوامر.
اسم المصفوفة هو “countries” وهو متصل بقائمة القيم بعلامة يساوي “” =
. قائمة القيم بين قوسين » ()
» وكل كلمة رئيسية بين قوسين » []
«. لاحظ أنه لا توجد فواصل تفصل بين القيم. إذا كان لديك سلسلة قيمة تحتوي على مسافات ، فستحتاج إلى لفها بين علامتي اقتباس.
لجعل مصفوفة ترابطية ترجع كلمة أساسية بدلاً من القيمة ، أضف علامة تعجب ” !
” أمام اسم المصفوفة. يمكن استخدام الرمز في » @
» كحرف بدل ، أي جميع عناصر المصفوفة.
ستدرج هذه for
الدورة جميع الكلمات الرئيسية:
لاحظ أن الكلمات الرئيسية ليست بالضرورة مدرجة بالترتيب الذي تم إنشاؤها به ، ولكن هذا لا يهم. لا تعتمد المصفوفات الترابطية على فهرس مرتب.
يمكننا أيضًا استخدام توسيع المعلمة لسرد جميع الكلمات الرئيسية. سيتم إدراجها في سطر واحد ، وليس سطرًا واحدًا في كل سطر.
يمكننا زيادة دورتنا for
لطباعة الكلمات الرئيسية والقيم في نفس الوقت.
إذا أردنا معرفة عدد العناصر الموجودة في المصفوفات ، فيمكننا استخدام علامة التجزئة “#” أمام اسم المصفوفة بدلاً من علامة التعجب.
التحقق من وجود عنصر مصفوفة
إذا كنت تبحث عن كلمة أساسية ولكن لا يوجد عنصر مصفوفة من هذا القبيل ، فستكون القيمة المعادة سلسلة فارغة. في بعض الأحيان يكون من المفيد أن يكون لديك مؤشر مختلف لوجود أو عدم وجود عنصر مصفوفة.
يمكننا التحقق من وجود عنصر مصفوفة باستخدام +_
عامل التشغيل » «. لاحظ أنه يأتي بعد الكلمة الأساسية ، وليس أمام اسم المصفوفة مثل العوامل السابقة التي رأيناها.
عنصر المصفوفة الذي يحتوي على الكلمة الأساسية “EOF” موجود في المصفوفة ، لكن عنصر المصفوفة الذي يحتوي على الكلمة الأساسية “FTP” ليس كذلك.
مضيفا عناصر المصفوفة
من السهل إضافة عناصر جديدة إلى مصفوفة ترابطية. على عكس بعض لغات البرمجة ، لا تحتاج إلى تحديد حجم المصفوفة عند التصريح عنها. يمكنك الاستمرار في إضافة عناصر جديدة دون الوصول إلى الحد الأعلى المحدد مسبقًا.
لإضافة عنصر جديد إلى المصفوفة ، نستخدم +=
العامل » «.
عدد العناصر في المصفوفة الآن ستة ، والبحث عن الكلمة الأساسية الجديدة يعثر على العنصر في المصفوفة ويعيد قيمته.
إزالة المصفوفات وعناصر الصفيف
و unset
يستخدم الأمر لإزالة عناصر من مجموعة. إذا كانت الكلمة الأساسية تحتوي على مسافات ، فلفها بعلامات اقتباس.
لإزالة المصفوفة بأكملها ، استخدمها unset
باسم المصفوفة.
países desarmados
استخدام المتغيرات مع المصفوفات
يعد استخدام المتغيرات مع المصفوفات الترابطية أمرًا سهلاً. في هذا المثال ، سنقوم بتعيين مفتاح متغير للسلسلة “EOF”. سنستخدم المتغير عندما نضيف عنصر مصفوفة جديد إلى المصفوفة. في الواقع ، نحن نستبدل عنصر المصفوفة الذي أزلناه سابقًا.
نسترجع العنصر الجديد من المصفوفة التي تستدعيه بالكلمة الأساسية الجديدة وأيضًا باستخدام المتغير. إذا كانت الكلمة الأساسية تحتوي على مسافات ، فيجب عليك إحاطة اسم المتغير بعلامات اقتباس.
كن مبدعا
كانت الأمثلة لدينا عبارة عن مجموعات من المعلومات حيث يكون كل عنصر في المصفوفة مستقلاً عن جميع العناصر الأخرى ، مثل القاموس. كل تعريف فريد. لكن المصفوفات الترابطية يمكن أن تحتوي بسهولة على مجموعة متنوعة من المعلومات ، وكلها مرتبطة بشيء واحد ، مثل مواصفات الأجزاء المختلفة من أجهزة الكمبيوتر:
تعني الكتابة بكفاءة بلغة ما معرفة الآليات والتراكيب التي تقدمها ، واختيار الأنسب للمشكلة التي تحاول حلها. تمنحك المصفوفات الترابطية طريقة سهلة الاستخدام لتخزين البيانات التي يمكنك البحث عنها بالاسم ، مثل القاموس.