كيفية التعامل مع البيانات والتحكم فيها باستخدام Bash Array

Kyfyt Alt Aml M Albyanat Walthkm Fyha Bastkhdam Bash Array



يتم استخدام متغير المصفوفة في أي لغة برمجة لتخزين قيم متعددة باستخدام فهرس. يمكن أن يكون فهرس الصفيف رقمًا أو سلسلة. يُطلق على المصفوفة التي تحتوي على الفهرس الرقمي اسم 'المصفوفة الرقمية' والمصفوفة التي تحتوي على قيمة السلسلة كمؤشر تسمى 'المصفوفة النقابية'. يمكن إنشاء كل من المصفوفات الرقمية والترابطية في Bash. يتم عرض طرق معالجة بيانات مصفوفة Bash والتحكم فيها بالتفصيل باستخدام 15 مثالًا في هذا البرنامج التعليمي.

قائمة المحتويات:

  1. تحديد صفيف حسب الفهرس
  2. تعريف مصفوفة ذات قيم متعددة
  3. تحديد صفيف النقابي
  4. حساب قيم الصفيف
  5. قراءة قيم المصفوفة بواسطة الحلقة
  6. اقرأ القيم الخاصة للمصفوفة
  7. أدخل قيم الصفيف
  8. قراءة محتوى الملف في المصفوفة
  9. الجمع بين قيم المصفوفة
  10. تعديل قيم الصفيف
  11. إزالة قيم الصفيف
  12. بحث واستبدال قيم الصفيف
  13. استخدم المصفوفة كوسيطة دالة
  14. قم بإرجاع المصفوفة من الدالة
  15. جعل المصفوفة فارغة

تحديد صفيف حسب الفهرس

يتم عرض طريقة الإعلان عن مصفوفة من خلال ذكر الفهارس الرقمية المتسلسلة أو غير المتسلسلة في البرنامج النصي التالي. يسمى هذا النوع من المصفوفات بالمصفوفة الرقمية. هنا، يتم إنشاء مصفوفة '$books' عن طريق تعريف ثلاثة فهارس متسلسلة ويتم إنشاء مصفوفة '$products' عن طريق تعريف أربعة فهارس غير متسلسلة. تتم طباعة جميع قيم كلا المصفوفتين باستخدام وظيفة 'printf'.







#!/بن/باش

# تحديد فهرس المصفوفة بترتيب تسلسلي

كتب [ 0 ] = 'تعلم باش شل'

كتب [ 1 ] = 'عمليات الأمن السيبراني مع باش'

كتب [ 2 ] = 'نصائح Bash Command Line Pro'

صدى صوت 'جميع قيم المصفوفة الأولى:'

printf '%s\n' ' ${كتب[@]} '

#Define فهرس المصفوفة بترتيب غير تسلسلي

منتجات [ 10 ] = 'قلم'

منتجات [ 5 ] = 'قلم'

منتجات [ 9 ] = 'العادية'

منتجات [ 4 ] = 'ورقة بحجم A4'

صدى صوت

صدى صوت 'كافة قيم المصفوفة الثانية:'

printf '%s\n' ' ${منتجات[@]} '

انتاج | :



يظهر الإخراج التالي بعد تنفيذ البرنامج النصي. تتم طباعة قيم كلا المصفوفتين في الإخراج. يتم الحفاظ على ترتيب الفهرس في وقت الطباعة لمجموعة الفهارس غير المتسلسلة:



  ص1





اذهب إلى الأعلى

تعريف مصفوفة ذات قيم متعددة

يمكن الإعلان عن مصفوفة رقمية ذات قيم متعددة باستخدام أمر 'declare' مع الخيار -a أو بدون استخدام أمر 'declare'. في البرنامج النصي التالي، يتم الإعلان عن المصفوفة الأولى باستخدام أمر 'declare' ويتم إنشاء المصفوفة الثانية دون استخدام أمر 'declare'.



#!/بن/باش

#Declare مصفوفة رقمية باستخدام الكلمة الأساسية 'declare'.

يعلن أسماء = ( 'ميخائيل' 'ديفيد' 'الإسكندر' 'توماس' 'روبرت' 'ريتشارد' )

# اطبع قيم المصفوفة

صدى صوت 'جميع قيم المصفوفة الأولى:'

printf '%s\n' ' ${أسماء[@]} '

#Declare مصفوفة رقمية بدون الكلمة الأساسية 'declare'.

كتب = ( 'دروس البرمجة النصية لـ Shell' «بيش باش بوش!» 'تعلم الباش بسرعة' )

#إضافة سطر جديد

صدى صوت

# اطبع قيم المصفوفة

صدى صوت 'كافة قيم المصفوفة الثانية:'

printf '%s\n' ' ${كتب[@]} '

انتاج | :

يظهر الإخراج التالي بعد تنفيذ البرنامج النصي. تتم طباعة قيم كلا المصفوفتين هنا:

  p2

اذهب إلى الأعلى

تحديد صفيف النقابي

يُطلق على المصفوفة التي تحتوي على قيمة السلسلة كمؤشر مصفوفة ترابطية. يتم استخدام الخيار -A مع أمر 'الإعلان' في Bash لإنشاء مصفوفة Bash ترابطية. في البرنامج النصي التالي، يتم الإعلان عن المصفوفة الترابطية الأولى عن طريق ذكر الفهارس بشكل منفصل ويتم الإعلان عن المصفوفة الثانية عن طريق ذكر جميع أزواج القيمة الرئيسية في وقت إعلان المصفوفة.

#!/بن/باش

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

يعلن موظف

# قم بتعيين القيمة بشكل منفصل عن طريق تحديد الفهرس

موظف [ 'بطاقة تعريف' ] = '78564'

موظف [ 'اسم' ] = 'الممثلون متاحون'

موظف [ 'بريد' ] = 'المدير التنفيذي'

موظف [ 'مرتب' ] = 300000

# اطبع قيمتين للمصفوفة

صدى صوت 'هوية الموظف: ${employee[id]} '

صدى صوت 'اسم الموظف: ${موظف[اسم]} '

# قم بتعريف مصفوفة اقترانية ذات قيم

يعلن دورة = ( [ شفرة ] = 'CSE-206' [ اسم ] = 'البرمجة الشيئية' [ ساعة معتمدة ] = 2.0 )

#إضافة سطر جديد

صدى صوت

# اطبع قيمتين من المصفوفة الثانية

صدى صوت 'اسم الدورة التدريبية: ${دورة[اسم]} '

صدى صوت 'ساعة معتمدة: ${دورة[credit_hour]} '

انتاج | :

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

  p3

اذهب إلى الأعلى

حساب قيم الصفيف

تظهر طريقة حساب إجمالي عناصر المصفوفة الرقمية والمصفوفة الترابطية في البرنامج النصي التالي:

#!/بن/باش

# قم بتعريف مصفوفة رقمية

يعلن أسماء = ( 'ميخائيل' 'ديفيد' 'الإسكندر' 'توماس' 'روبرت' 'ريتشارد' ) ;

صدى صوت 'طول المصفوفة الرقمية هو ${#أسماء[@]} '

# قم بتعريف المصفوفة النقابية

يعلن دورة = ( [ شفرة ] = 'CSE-206' [ اسم ] = 'البرمجة الشيئية' [ ساعة معتمدة ] = 2.0 )

صدى صوت 'طول المصفوفة النقابية هو ${#كورس[@]} '

انتاج | :

يظهر الإخراج التالي بعد تنفيذ البرنامج النصي. تتم طباعة طول المصفوفة للمصفوفات الرقمية والترابطية هنا:

  ص4

اذهب إلى الأعلى

قراءة قيم المصفوفة بواسطة الحلقة

تظهر طريقة قراءة جميع قيم المصفوفة الرقمية والمصفوفة الترابطية باستخدام حلقة 'for' في البرنامج النصي التالي:

#!/بن/باش

# قم بتعريف مصفوفة رقمية

يعلن كتب = ( 'دروس البرمجة النصية لـ Shell' 'بيش باش بوش!' 'تعلم باش بسرعة' )

# اطبع قيم المصفوفة الرقمية

صدى صوت 'قيم الصفيف الرقمية هي:'

ل في في ' ${كتب[@]} '

يفعل

صدى صوت ' $ في '

منتهي

صدى صوت

# قم بتعريف مصفوفة اقترانية ذات قيم

يعلن عملاء = (

[ بطاقة تعريف ] = 'ح-5623'

[ اسم ] = 'السيد. أحنف

[ عنوان ] = '6/أ، دانموندي، دكا.'

[ هاتف ] = '+8801975642312' )

# اطبع قيم المصفوفة الترابطية

صدى صوت 'قيم الصفيف الترابطية هي:'

ل ك في ' ${!العملاء[@]} '

يفعل

صدى صوت ' $ ك => ${العملاء[$k]} '

منتهي

انتاج | :

يظهر الإخراج التالي بعد تنفيذ البرنامج النصي. هنا، تتم طباعة قيم المصفوفة الرقمية وأزواج القيمة الرئيسية للمصفوفة الترابطية في الإخراج:

  ص5

اذهب إلى الأعلى

اقرأ النطاق المحدد لقيم المصفوفة

يتم عرض قيم الصفيف لنطاق معين من الفهارس في البرنامج النصي التالي. في البرنامج النصي، يتم تعريف مجموعة رقمية من أربعة عناصر. تتم طباعة قيمتين للصفيف من الفهرس الثاني للصفيف لاحقًا.

#!/بن/باش

# قم بتعريف مصفوفة رقمية

يعلن كيك = ( 'كعكة الشوكولاتة' 'كعكة الفانيليا' 'كعكة المخملية الحمراء' 'كعكة الفراولة' )

# اطبع قيم الصفيف المحددة

صدى صوت 'العنصران الثاني والثالث لقيم المصفوفة هما:'

printf '%s\n' ' ${كعك[@]:1:2} '

انتاج | :

يظهر الإخراج التالي بعد تنفيذ البرنامج النصي. القيمتان الثانية والثالثة للمصفوفة هي 'Vanilla Cake' و'Red Velvet Cake' والتي تتم طباعتها في الإخراج:

  ص6

اذهب إلى الأعلى

أدخل قيم الصفيف

يتم عرض طريقة إضافة قيم متعددة في نهاية المصفوفة في البرنامج النصي التالي. تحتوي المصفوفة الرئيسية وهي '$books' على ثلاثة عناصر ويتم إضافة عنصرين في نهاية المصفوفة '$books'.

#!/بن/باش

# قم بتعريف مصفوفة رقمية

يعلن كتب = ( 'دروس البرمجة النصية لـ Shell' 'بيش باش بوش!' 'تعلم باش بسرعة' )

# اطبع قيم المصفوفة قبل الإدراج

صدى صوت 'قيم المصفوفة:'

printf '%s\n' ' ${كتب[@]} '

صدى صوت

كتب = ( ' ${كتب[@]} ' 'سطر أوامر Linux والكتاب المقدس للبرمجة النصية لـ Shell' 'دليل برمجة Bash المتقدم بواسطة Mendel Cooper' )

# اطبع قيم المصفوفة بعد الإدراج

صدى صوت 'قيم الصفيف بعد إدراج قيمتين:'

printf '%s\n' ' ${كتب[@]} '

انتاج | :

يظهر الإخراج التالي بعد تنفيذ البرنامج النصي. تتم طباعة قيم المصفوفة قبل وبعد إدراج قيم جديدة في الإخراج:

  ص7

اذهب إلى الأعلى

اقرأ محتوى الملف في المصفوفة

قم بإنشاء ملف نصي باسم 'fruits.txt' بالمحتوى التالي لاختبار البرنامج النصي لهذا المثال:

Fruits.txt

مانجو

جاكفروت

أناناس

البرتقالي

موز

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

#!/بن/باش

#اقرأ اسم الملف من المستخدم

يقرأ 'أدخل اسم الملف:' اسم الملف

لو [ -F اسم الملف $ ]

ثم

# اقرأ محتوى الملف في مصفوفة'

بيانات = ( ` قطة ' اسم الملف $ ' ` )

صدى صوت 'محتوى الملف موضح أدناه:'

# اقرأ الملف سطراً سطراً

ل خط في ' ${بيانات[@]} '

يفعل

صدى صوت خط $

منتهي

يكون

انتاج | :

يظهر الإخراج التالي بعد تنفيذ البرنامج النصي. الإخراج الذي يظهر بواسطة الأمر 'cat' ومخرجات البرنامج النصي متشابهان لأنه يتم الوصول إلى نفس الملف عن طريق الأمر 'cat' والبرنامج النصي:

  ص8

اذهب إلى الأعلى

الجمع بين قيم المصفوفة

يتم إنشاء مصفوفة جديدة من خلال الجمع بين قيم المصفوفات المتعددة. في البرنامج النصي التالي، يتم تعريف صفيفين رقميين من السلاسل. ثم يتم إنشاء مصفوفة جديدة من خلال الجمع بين قيم هذه المصفوفات.

#!/بن/باش

#أعلن عن المصفوفة الأولى

يعلن قائمة الاسم1 = ( 'ميخائيل' 'ديفيد' 'الإسكندر' 'توماس' )

صدى صوت 'قيم الصفيف الأول هي:'

printf '٪س، ' ${nameList1[@]}

صدى صوت

# قم بتعريف المصفوفة الثانية

يعلن nameList2 = ( 'روبرت' 'ريتشارد' )

صدى صوت 'قيم المصفوفة الثانية هي:'

printf '٪س، ' ${nameList2[@]}

صدى صوت

# أنشئ مصفوفة جديدة من خلال الجمع بين مصفوفتين

Combined_array = ( ' ${nameList1[@]} ' ' ${nameList2[@]} ' )

صدى صوت 'قيم الصفيف المدمجة هي:'

printf '٪س، ' ${combined_array[@]}

صدى صوت

انتاج | :

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

  p9

اذهب إلى الأعلى

تعديل قيم الصفيف

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

#!/بن/باش

#أعلن عن المصفوفة الأولى

يعلن لائحة الأسماء = ( 'ميخائيل' 'ديفيد' 'الإسكندر' 'توماس' )

صدى صوت 'قيم المصفوفة:'

printf '٪س، ' ${nameList[@]}

صدى صوت

#تحديث القيمة الثانية للمصفوفة

لائحة الأسماء [ 1 ] = 'روبرت'

صدى صوت 'قيم الصفيف بعد التحديث:'

printf '٪س، ' ${nameList[@]}

صدى صوت

انتاج | :

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

  ص10

إزالة قيم الصفيف

يتم استخدام الأمر 'unset' لإزالة عنصر معين أو جميع عناصر المصفوفة. في البرنامج النصي التالي، تتم إزالة العنصر الثاني من الصفيف.

#!/بن/باش

# قم بتعريف مصفوفة رقمية

يعلن كتب = ( 'دروس البرمجة النصية لـ Shell' 'بيش باش بوش!' 'تعلم باش بسرعة' )

# اطبع قيم المصفوفة قبل الإزالة

صدى صوت 'قيم المصفوفة:'

printf '%s\n' ' ${كتب[@]} '

صدى صوت

#إزالة العنصر الثاني

غير محدد كتب [ 1 ]

# اطبع قيم المصفوفة بعد الإزالة

صدى صوت 'قيم الصفيف بعد إزالة القيمة الثانية:'

printf '%s\n' ' ${كتب[@]} '

انتاج | :

يظهر الإخراج التالي بعد تنفيذ البرنامج النصي. تتم طباعة قيم المصفوفة الرئيسية وقيم المصفوفة بعد إزالة قيمة واحدة في الإخراج:

  ص11

اذهب إلى الأعلى

بحث واستبدال قيم الصفيف

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

#!/بن/باش

#أعلن عن المصفوفة الأولى

يعلن أسماء = ( 'ميخائيل' 'ديفيد' 'الإسكندر' 'توماس' )

# اطبع قيم المصفوفة الأصلية

صدى صوت 'قيم الصفيف الأصلية:'

printf '%s\n' ' ${أسماء[@]} '

# إنشاء سلسلة بعد استبدال قيم المصفوفة

update_array = ${أسماء[@]/ألكسندر/ريتشارد}

# اطبع قيم المصفوفة بعد الاستبدال

صدى صوت 'قيم الصفيف بعد الاستبدال:'

printf '%s\n' ' ${updated_array[@]} '

انتاج | :

يظهر الإخراج التالي بعد تنفيذ البرنامج النصي. تتم طباعة قيم المصفوفة الرئيسية وقيم المصفوفة بعد استبدال القيمة في الإخراج:

  p12

اذهب إلى الأعلى

استخدم المصفوفة كوسيطة دالة

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

#!/بن/باش

# قم بتعريف مجموعة من الأرقام

يعلن أعداد = ( 10 6 أربعة خمسة 13 8 )

#Define دالة ستأخذ قيمة وسيطة

func ( )

{

#اقرأ الحجة الأولى

أعداد = 1 دولار

# اطبع قيم المصفوفة

صدى صوت 'قيم المصفوفة:'

printf '%d\n' ' ${أرقام[@]} '

}

# استدعاء الدالة باستخدام المصفوفة كوسيطة

func ' ${أرقام[@]} '

انتاج | :

يظهر الإخراج التالي بعد تنفيذ البرنامج النصي:

  ص13

اذهب إلى الأعلى

قم بإرجاع مصفوفة من الدالة

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

#!/بن/باش

#Define دالة تقرأ قيم الوسيطات الأربعة

func ( )

{

#اقرأ قيم الوسيطة

أعداد = ( 1 دولار 2 دولار 3 دولارات 4 دولارات )

#إرجاع المصفوفة

صدى صوت ' ${أرقام[@]} '

}

# استدعاء الوظيفة بثلاث وسائط

return_val =$ ( func 78 أربعة خمسة 90 23 )

# قم بتخزين القيمة المرجعة في مصفوفة

يقرأ على واحد <<< $return_val

# اطبع قيم المصفوفة التي تم إرجاعها

صدى صوت 'قيم المصفوفة هي:'

ل في في ' ${عدد[@]} '

يفعل

صدى صوت ' $ في '

منتهي

انتاج | :

يظهر الإخراج التالي بعد تنفيذ البرنامج النصي:

اذهب إلى الأعلى

جعل المصفوفة فارغة

يوضح البرنامج النصي التالي طريقة جعل المصفوفة فارغة باستخدام أمر 'unset'. تتم طباعة العدد الإجمالي لقيم المصفوفة قبل وبعد جعل المصفوفة فارغة.

#!/بن/باش

# قم بتعريف مجموعة من الأرقام

يعلن أعداد = ( 10 6 أربعة خمسة 13 80 )

صدى صوت 'عدد قيم المصفوفة: ${#أرقام[@]} '

#اجعل المصفوفة فارغة

غير محدد أعداد

صدى صوت 'عدد قيم المصفوفة بعد جعل المصفوفة فارغة: ${#أرقام[@]} '

انتاج | :

يظهر الإخراج التالي بعد تنفيذ البرنامج النصي. أصبح عدد عناصر المصفوفة 0 بعد جعل المصفوفة فارغة:

  ص15

اذهب إلى الأعلى

خاتمة

يتم عرض طرق مختلفة للإعلان عن متغيرات المصفوفة في برنامج Bash النصي والوصول إليها وتعديلها وإزالتها في هذا البرنامج التعليمي باستخدام 15 مثالًا بسيطًا. نأمل أن يساعد هذا البرنامج التعليمي مستخدمي Bash في معرفة استخدامات مصفوفة Bash بالتفصيل.