المصفوفات في نصوص Shell

0 الأسهم
0
0
0
0

مقدمة

إن معرفة كيفية التعامل مع المصفوفات في نصوص الشل ستساعدك على التعامل مع مجموعات بيانات أكبر بكفاءة عالية. ولكن ما هي المصفوفات وكيف تُنشأ؟ لنكتشف ذلك.

ما هي المصفوفات؟

إذا كان لديك فهم أساسي لأي لغة برمجة، فأنت تعرف ما هي المصفوفات. ولكن لمن لا يعرفها، فلنستعرض أساسيات المصفوفات ونتعلم كيفية التعامل معها.

تخزن المتغيرات عناصر بيانات مفردة. أما المصفوفات، فتستطيع تخزين عدد غير محدود تقريبًا من عناصر البيانات. عند التعامل مع كميات كبيرة من البيانات، قد تكون المتغيرات غير فعالة، لذا يُعد استخدام المصفوفات مفيدًا جدًا.

دعونا نتعلم كيفية إنشاء المصفوفات في نصوص shell.

إنشاء المصفوفات في نصوص shell

هناك نوعان من المصفوفات التي يمكننا العمل بها في نصوص shell.

  • المصفوفات المفهرسة - تخزين العناصر بفهرس يبدأ من 0
  • المصفوفات الترابطية - تخزين العناصر في أزواج مفتاح-قيمة

المصفوفة الافتراضية المُنشأة هي مصفوفة مُفهرسة. عند تحديد أسماء الفهارس، تُصبح مصفوفة ارتباطية، ويمكن الوصول إلى عناصرها باستخدام أسماء الفهارس بدلاً من الأرقام.

إعلان المصفوفات:

root@ubuntu:~# declare -A assoc_array
root@ubuntu:~# assoc_array[key]=value
OR
root@ubuntu:~# declare -a indexed_array
root@ubuntu:~# indexed_array[0]=value

لاحظ استخدام الحرفين الكبير والصغير a. يُستخدم الحرف الكبير A لإعلان مصفوفة ارتباطية، بينما يُستخدم الحرف الصغير a لإعلان مصفوفة مفهرسة.

تُستخدم الكلمة المفتاحية "declare" للإعلان صراحةً عن المصفوفات، ولكنك لستَ بحاجةٍ لاستخدامها. عند إنشاء مصفوفة، يمكنك ببساطة تهيئة القيم بناءً على نوع المصفوفة المطلوبة دون الإعلان عنها صراحةً.

العمل مع المصفوفات في نصوص shell

الآن وقد تعرفتَ على كيفية إنشاء مصفوفة، لنتعلم كيفية التعامل معها. بما أنها مجموعات من عناصر البيانات، يمكننا العمل مع الحلقات والمصفوفات في الوقت نفسه لاستخراج نقاط البيانات المطلوبة.

1. الوصول إلى عناصر المصفوفة بشكل فردي

وبما أننا نعلم أن كل نقطة بيانات مفهرسة بشكل فردي، فيمكننا الوصول إلى جميع عناصر المصفوفة من خلال تحديد مؤشر المصفوفة كما هو موضح أدناه:

assoc_array[element1]="Hello World"
echo ${assoc_array[element1]}

وبالمثل، لنصل إلى بعض عناصر مصفوفة مفهرسة. يمكننا تحديد جميع عناصر المصفوفة المفهرسة بفصلها بمسافات، حيث يُولّد الفهرس تلقائيًا لكل عنصر.

index_array=(1 2 3 4 5 6)
echo ${index_array[0]}

كما ترى، يتم طباعة العنصر الأول تلقائيًا عند الفهرس 0.

2. قراءة عناصر المصفوفة بالتتابع

إذا كنت تعرف الحلقات، فسيكون هذا سهلاً. أما إذا لم تكن تعرفها، فسنتناولها في درس لاحق. سنستخدم حلقات while أو for في نصوص shell للعمل على عناصر المصفوفة. انسخ النص التالي واحفظه باسم حفظ .sh

#!/bin/bash
index_array=(1 2 3 4 5 6 7 8 9 0)
for i in ${index_array[@]}
do
echo $i
done

سيحتوي البرنامج النصي أعلاه على الإخراج التالي:

ربما لاحظت الآن index_array[@] وإذا كنت تتساءل عن سبب استخدام الرمز @، فسنقوم بتغطية ذلك الآن.

العمليات المضمنة للمصفوفات في نصوص shell

الآن بعد أن تعلمت كيفية الوصول إلى العناصر بشكل فردي واستخدام حلقات for، دعنا نتعلم العمليات المختلفة المتاحة افتراضيًا للمصفوفات.

1. الوصول إلى جميع عناصر المصفوفة

لقد تعلمنا كيفية الوصول إلى العناصر من خلال توفير فهرس أو مفتاح مصفوفة. ولكن إذا أردنا طباعة جميع العناصر دفعةً واحدة أو العمل عليها، فيمكننا استخدام عامل آخر وهو علامة [@].

كما لاحظت في المثال أعلاه، استخدمت هذا الرمز عندما أردت المرور عبر جميع عناصر المصفوفة باستخدام حلقة for.

echo ${assoc_array[@]}

تقوم الطباعة أعلاه بطباعة جميع العناصر المخزنة في مجموعة assoc.

2. احسب عدد العناصر في المصفوفة

على غرار الرمز @ أعلاه، لدينا الرمز #، والذي يُمكن إضافته إلى اسم المصفوفة لمعرفة عدد العناصر المخزنة فيها. لنرَ كيف يعمل.

echo ${#index_array[@]}

إذا كنت تريد حساب عدد الأحرف المستخدمة لعنصر معين، يمكننا ببساطة استبدال علامة @ بالمؤشر.

3. حذف عناصر المصفوفة الفردية

نعرف كيفية إضافة عناصر إلى مصفوفة وطباعتها. لنتعلم كيفية إزالة عناصر محددة. لهذا الغرض، نستخدم الكلمة المفتاحية unset.

unset index_array[1]

استبدل اسم المصفوفة ومعرّف الفهرس في مثال الكود أعلاه، وستحذف عنصر المصفوفة المطلوب. الأمر بسيط جدًا، أليس كذلك؟

نتيجة

نصوص الشل واسعة النطاق، ويمكنها استبدال أي وظيفة تُنفَّذ في الطرفية بالشخص المناسب الذي يكتب النص. من بين الإمكانيات الإضافية للمصفوفات في نصوص الشل أيضًا إمكانية التعامل مع التعبيرات العادية (regex). يمكننا استخدام تعبيرات عادية متنوعة للتعامل مع عناصر المصفوفة في نصوص الشل.

نأمل أن تكون قد اكتسبت الآن فهمًا جيدًا لإنشاء المصفوفات والعمل معها، وأن تتمكن من استخدامها في نصوصك البرمجية. اترك تعليقًا أدناه لمشاركة أفكارك، وإذا كانت لديك أي أسئلة حول هذا الموضوع.

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

قد يعجبك أيضاً