الثلاثاء، 20 مارس 2012

التعامل مع المصفوفات في لغة BASH

بسم الله الرحمن الرحيم

ستتعلم في هذا الموضوع كيفية التصريح و التعامل مع المصفوفات في لغة باش سكريبت في نظام التشغيل لينكس بأمثلة :

1 . التصريح عن مصفوفة :

يتم إنشاء مصفوفة عند تصريح عن متغير بهذه الصيغة :

name[index]=value
  • name : أسم المتغير .
  • index : قيمة الفهرس .
  • value : قيمة المتغير .
و هذا مثال عن أستخدام المصفوفات في هذا السكريبت:

#!/bin/bash

name[1]="mohmmed"

name[2]="salem"

name[3]="abdullah"

echo ${name[2]} #Print the value number 2

ترى في السطر الأخير أننا قمنا بطباعة القيمة و أستدعاءها بأستخدم "{}$"  .

2 . التصريح عن المصفوفة و تعيين جيمع قيمها في سطر واحد :

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

#!/bin/bash

declare -a name=("mohmmed" "salem" "abdullah")



echo ${name[2]}



3 .  طباعة جميع عناصر المصفوفة :

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

#!/bin/bash

declare -a name=("mohmmed" "salem" "abdullah")



echo ${name[@]}



4 . طباعة طول المصفوفة :

لطباعة عدد عناصر المصفوفة تستطيع أستخدام الحرف "#" و "@" كهذا المثال :

#!/bin/bash

declare -a name=("mohmmed" "salem" "abdullah")



echo ${#name[@]}


و لعرض طول عنصر في المصفوفة كالتالي بأستخدام الحرف "#" و رقم الفهرس الخاص بالعنصر :
#!/bin/bash

declare -a name=("mohmmed" "salem" "abdullah")

echo ${#name[1]}


5 . الحصول على عدد من العناصر بواسطة البعد :

تستطيع أستخدام بأستخدام ترقيم العناصر طباعة العناصر المختارة كهذا المثال :
#!/bin/bash

declare -a name=("mohmmed" "salem" "abdullah")

echo ${name[@]:1:2}


سيتم طباعة العنصرين رقم 1 و 2 (تذكر أن ترقيم العناصر يبدأ من الصفر ).

6 . الحصول على جزء من العنصر :

للحصول على جزء من العنصر كهذا المثال :
#!/bin/bash

declare -a name=("mohmmed" "salem" "abdullah")

echo ${name[1]:1:2}


ستيم طباعة الحروف "al" فقط من العنصر 1 .

7. البحث و الأستبدال في المصفوفة :

للبحث عن قيمة في المصفوفة و أستبدالها تستطيع أستخدام الطريقة التالية :
#!/bin/bash

declare -a name=("mohmmed" "salem" "abdullah")

echo ${name[1]/salem/ahmed}


استخدمنا "salem/ahmed/" حيث أبتدئنا بالقيمة التي نريد تغيرها ثم القيمة الجديدة .

8. أضافة عنصر لمصفوفة موجودة :
#!/bin/bash

declare -a name=("mohmmed" "salem" "abdullah")

name=("${name[@]}" "Ahmed") #هذا السطر سيضيف قيمة جديد للمصفوفة

echo ${name[3]}


لأضافة قيمة جديدة للمصفوفة تستطيع أستخدام الطريقة الموجودة في السطر الثالث في المثال .

9. حذف عنصر من المصفوفة:

لحذف عنصر تستطيع أستخدام الأمر unset كالتالي :
#!/bin/bash

declare -a name=("mohmmed" "salem" "abdullah")

unset name[1]


سيتم حذف العنصر رقم 1 من المصفوفة .


10 . البحث عن عنصر بواسطة القيمة و حذفه :

#!/bin/bash

declare -a name=("mohmmed" "salem" "abdullah")

echo ${#name[1]/salem*/}


 في السطر الثالث سيتم حذف القيمة التي تبدأ بـ"salem" أو تساويها من المصفوفة بسبب وجود النجمة في نهاية القيمة في المثال  ,طبعا للحفظ الناتج يجب أتباع الخطوات في التالي بأستخدام الأمر declare :

#!/bin/bash

declare -a name=("mohmmed" "salem" "abdullah")

declare -a  name2=(${name[1]/salem*/})



11 . حذف مصفوفة كاملة :

لحذف مصفوفة بكملها تستطيع أستخدام الأمر unset كالتالي :
#!/bin/bash

declare -a name=("mohmmed" "salem" "abdullah")

unset name



 12 . أستخدام الحلقة التكرارية for للتعامل مع المصفوفات :

تستطيع أستخدام الحلقة التكرارية for للوصول لعناصر المصفوفة كهذا المثال :
#!/bin/bash
declare -a name=("mohmmed" "salem" "abdullah")

for i in ${name[@]}

do
echo $i > filetxt.txt
done


في هذا المثال سيتم حفظ قيم المصفوفة في الملف filetxt.txt .


هذا نهاية هذا المقال و أذا كان لديك أخي القارىء أي أضافة أو تعديل أو سؤال فلا تتردد شاركنا .

هناك تعليق واحد: