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

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

النحو الأساسي لمصفوفات باش

يعد إنشاء مصفوفة في bash أمرًا سهلاً. يمكنك تهيئة مصفوفة كاملة باستخدام الأقواس ، على سبيل المثال:

city ​​= (London Paris Milan "New York")

(يمكنك العثور على جميع الرموز من مثال هذه المدينة بتنسيق هذا GitHub Gist.)

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

يمكنك الوصول إلى عنصر واحد باستخدام بنية الأقواس الشائعة عبر لغات البرمجة:

مدينة [2]

نظرًا لأن هذا هو bash ، فستحتاج إلى بعض التصفيات لاستخدام القيمة في التعبير فعليًا:

  • ستحتاج إلى إرفاق علامة الدولار مسبقًا ($) لاسم المتغير.
  • ستحتاج أيضًا إلى استخدام الأقواس ({}) لجعل اسم المتغير لا لبس فيه. بشكل افتراضي ، سيعامل bash ملفات
    instagram viewer
    $ مدينة [2] كمتغير اسمه مدينة. أضف الأقواس لتطلب من bash تقييم الأقواس ورقم الفهرس أيضًا.

إذن ، يكون بناء جملة الوصول إلى مصفوفة bash القياسية:

$ {variable_name [index]}

إليك مثال كامل:

#! / بن / باش

city ​​= (London Paris Milan "New York")
صدى $ {city [3]}

# نيويورك

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

#! / بن / باش

المدينة [0] = لندن
المدينة [1] = باريس
المدينة [2] = ميلان
المدينة [3] = "نيويورك"
صدى $ {city [3]}

# نيويورك

لاحظ أنه في كلتا الحالتين ، يجب أن تكون حريصًا على عدم إضافة أي مسافة حول علامة التساوي. "city [0] = London" ، مع وجود مسافات حول علامة يساوي ، سيؤدي إلى حدوث خطأ.

المزيد من الاستخدامات لـ Bash Arrays

المصفوفات مثالية لتخزين البيانات ذات الصلة. إليك نص شيل (محدود جدًا) للحصول على الجذر التربيعي لرقم:

#! / بن / باش

الجذر التربيعي [1] = 1
الجذر التربيعي [4] = 2
الجذر التربيعي [9] = 3
الجذر التربيعي [16] = 4
الجذر التربيعي [25] = 5

صدى $ {sqrt [$ 1]}

لاحظ أن البرنامج النصي يستخدم القيمة $1 كمؤشر الصفيف. $1 يمثل أول وسيطة سطر أوامر يتلقاها البرنامج النصي ، لذا يمكنك تشغيل هذا البرنامج النصي على النحو التالي:

$ ./sqrt.sh 9
3

قد تكون على دراية بـ $ (cmd) بناء الجملة لتنفيذ أمر وحفظ مخرجاته في متغير. يمكنك دمج هذا مع بنية تهيئة الصفيف للحصول على مجموعة من الملفات للعمل معها:

arr = ($ (ls))

المصفوفة غالبًا بنية بيانات مثالية للتكرار وباش ليست استثناء. يمكنك إجراء تكرار عبر مصفوفة لطباعة كل عنصر أو لإجراء عملية على كل عضو.

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

للملف في "$ {arr [@]}" ؛ فعل
wc -l "ملف $"
انتهى

# 3 إنفارز
# 547 httpd.conf
# ...

لاحظ أن هذا النمط يستخدم امتداد @ رمز لاسترداد جميع العناصر من المصفوفة.

المزيد من بناء جملة Bash Array

يمكنك الحصول على عدد العناصر في المصفوفة باستخدام ما يلي:

صدى $ {# city [@]}

# 4

يمكنك إضافة عنصر جديد إلى نهاية المصفوفة القياسية كما يلي:

ار + = (4)

لذلك لإضافة مدينة خامسة إلى القائمة:

المدينة + = (روما)
صدى $ {city [@]}

# لندن باريس ميلان نيويورك روما

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

$ {arr [@]: s: n}

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

صدى $ {city [@]: 2: 2}
# ميلان نيويورك

صدى $ {city [@]: 3}
# نيويورك روما

تتمتع Bash بالعديد من الميزات ، فهي تتطلب بعض التعلم فقط

قد تحتوي المصفوفات في bash على قيود ، لكنها تقدم نفس الوظائف الأساسية كما تفعل معظم لغات البرمجة. على الرغم من أن bash دعمت تاريخياً المصفوفات المباشرة أحادية البعد ، إلا أن الزمن يتغير. يدعم أحدث إصدار من bash ، 4 ، المصفوفات الترابطية وفهرسة المصفوفات السلبية.

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

شرح متغيرات باش: دليل بسيط مع أمثلة

اقرأ التالي

شاركسقسقةشاركبريد الالكتروني

مواضيع ذات صلة

  • برمجة
  • لينكس
  • برمجة
  • لينكس باش شل
  • البرمجة

نبذة عن الكاتب

بوبي جاك (71 مقالة منشورة)

بوبي متحمس للتكنولوجيا وعمل كمطور برمجيات لأكثر من عقدين من الزمن. في MUO ، هو محرر مبتدئ لقسم البرمجة. إنه شغوف بالألعاب ، ويعمل كرئيس تحرير في مجلة Switch Player ، ومنغمس في جميع جوانب النشر عبر الإنترنت وتطوير الويب.

المزيد من Bobby Jack

اشترك في نشرتنا الإخبارية

انضم إلى النشرة الإخبارية لدينا للحصول على نصائح تقنية ومراجعات وكتب إلكترونية مجانية وصفقات حصرية!

انقر هنا للاشتراك