مصفوفات Bash: كيفية تعريف مصفوفة نصية واستخدامها داخل Bash Script

دقائق القراءة: 4

مقدمة حول مصفوفات Bash

تُعد Bash scripts من الأدوات العملية المهمة لأتمتة المهام المتكررة على سطر الأوامر، سواء لإدارة الملفات أو تشغيل الأوامر أو بناء تدفقات عمل بسيطة وفعالة. ومن بين الميزات المفيدة التي توفرها لغة Bash إمكانية التعامل مع arrays لتخزين أكثر من قيمة داخل متغير واحد.

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

شرح عملي لمصفوفات Bash وكيفية تعريف مصفوفة نصية داخل Bash Script

كيفية تعريف مصفوفة في Bash

تعريف مصفوفة في Bash سهل من حيث المبدأ، لكنه يتطلب انتباهاً دقيقاً للصياغة. فإذا كنت معتاداً على لغات مثل JavaScript أو Python، فقد تبدو الفكرة مألوفة، لكن هناك فروق بسيطة في الشكل قد تؤدي إلى سلوك غير متوقع إذا لم تُكتب بدقة.

خطوات تعريف مصفوفة نصية

  • اختر اسماً واضحاً للمصفوفة.
  • اكتب علامة = مباشرة بعد اسم المتغير دون أي مسافات.
  • ضع القيم داخل أقواس دائرية ().
  • اكتب العناصر النصية بين علامتي تنصيص.
  • لا تستخدم الفواصل بين العناصر.

يكون تعريف المصفوفة بالشكل التالي:

myArray=( "cat" "dog" "mouse" "frog" )

في هذا المثال، تحتوي المصفوفة myArray على أربع قيم نصية. ويُفضل دائماً استخدام أسماء متغيرات معبرة لتسهيل قراءة الكود وصيانته لاحقاً.

كيفية الوصول إلى عناصر المصفوفة في Bash

بعد تعريف المصفوفة، تأتي الخطوة التالية وهي التعامل مع عناصرها. في Bash توجد أكثر من طريقة للتكرار على المصفوفة، وأكثر الأساليب شيوعاً هما:

  • التكرار على العناصر نفسها.
  • التكرار على الفهارس indices.

اختيار الأسلوب المناسب يعتمد على طبيعة المهمة التي تريد تنفيذها داخل السكربت.

التكرار على عناصر المصفوفة مباشرة

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

for str in ${myArray[@]} ; do
  echo $str
done

الناتج سيكون كالتالي:

cat
dog
mouse
frog

ماذا يعني الرمز @ داخل المصفوفة؟

الجزء ${myArray[@]} يعني أنك تطلب من Bash المرور على جميع عناصر المصفوفة. وهذه نقطة مهمة جداً، لأن حذف الرمز @ قد يؤدي إلى الوصول إلى أول عنصر فقط بدلاً من كامل المصفوفة، وهو خطأ شائع لدى المبتدئين.

لذلك، عندما يكون الهدف هو معالجة كل القيم المخزنة داخل المصفوفة، احرص على استخدام الصياغة الكاملة بالشكل الصحيح.

كيفية التكرار على فهارس المصفوفة في Bash

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

for i in ${!myArray[@]} ; do
  echo "element $i is ${myArray[$i]}"
done

وسيكون الناتج بالشكل التالي:

element 0 is cat
element 1 is dog
element 2 is mouse
element 3 is frog

ما وظيفة علامة ! قبل اسم المصفوفة؟

عند كتابة ${!myArray[@]} فإن علامة ! لا تعني النفي كما هو شائع في لغات أخرى، بل تعني هنا الوصول إلى فهارس المصفوفة بدلاً من عناصرها. وهذه من التفاصيل الدقيقة التي ينبغي الانتباه لها عند كتابة سكربتات Bash.

إذا تجاهلت هذه النقطة، فقد تخلط بين القيم والفهارس، ما يؤدي إلى نتائج غير صحيحة داخل الحلقة.

ملاحظات مهمة حول صياغة المصفوفات في Bash

هناك بعض القواعد التي تساعدك على كتابة كود أنظف وأكثر دقة عند التعامل مع Bash arrays:

  • استخدم الأقواس الدائرية () عند تعريف المصفوفة، وليس الأقواس المربعة.
  • لا تضع مسافات حول علامة = أثناء تعريف المتغير.
  • عند الإشارة إلى المصفوفة، استخدم الصياغة بين الأقواس المعقوفة مثل ${myArray[@]}.
  • عند استخدام متغير عادي مثل رقم أو نص منفرد، يكفي غالباً كتابة $i أو $name.
  • لضمان وضوح الكود، من الأفضل استخدام أسماء متغيرات تصف الغرض منها بوضوح.

الفرق بين المتغير العادي والمصفوفة في Bash

المتغير العادي في Bash يحتفظ بقيمة واحدة فقط، بينما تسمح لك المصفوفة بتجميع عدة قيم مترابطة تحت اسم واحد. هذا يجعلها مناسبة للسيناريوهات التي تتطلب المرور على مجموعة من العناصر مثل أسماء الملفات أو البيئات أو الأوامر أو القيم النصية.

نوع التخزين الاستخدام مثال
متغير عادي تخزين قيمة واحدة name="cat"
مصفوفة تخزين عدة قيم myArray=( "cat" "dog" "mouse" )

متى تستخدم المصفوفات في Bash Script؟

تكون المصفوفات مفيدة جداً عندما تحتاج إلى تنفيذ نفس العملية على مجموعة من القيم. على سبيل المثال:

  1. معالجة قائمة من الملفات أو المجلدات.
  2. التكرار على مجموعة من أسماء الخوادم.
  3. تشغيل أوامر على عدة مدخلات متتابعة.
  4. تنظيم القيم داخل سكربت طويل بطريقة أسهل في الإدارة.

استخدام المصفوفات لا يحسن فقط بنية السكربت، بل يجعل الكود أكثر قابلية للتوسع وإعادة الاستخدام.

أخطاء شائعة عند تعريف واستخدام Bash Array

  • إضافة مسافات حول علامة = عند التعريف.
  • استخدام الفواصل بين عناصر المصفوفة كما يحدث في بعض اللغات الأخرى.
  • نسيان استخدام @ عند التكرار على جميع العناصر.
  • الخلط بين التكرار على العناصر والتكرار على الفهارس.
  • إهمال الأقواس المعقوفة عند الوصول إلى عناصر المصفوفة.

تفادي هذه الأخطاء من البداية يختصر عليك كثيراً من الوقت أثناء الاختبار والتصحيح.

الخلاصة التقنية

تُعد Bash arrays وسيلة فعالة لتنظيم البيانات داخل Bash Script، خصوصاً عند التعامل مع أكثر من قيمة ضمن مهمة واحدة. ورغم بساطة المفهوم، فإن نجاح استخدام المصفوفات يعتمد على فهم الصياغة بدقة، مثل طريقة التعريف، والفرق بين العناصر والفهارس، وآلية التكرار السليمة. إذا أتقنت هذه الأساسيات، ستتمكن من كتابة سكربتات أكثر مرونة واحترافية على سطر الأوامر.

اترك تعليقاً

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