speed
./عضو جديد



السمعة:
- إنضم3 مايو 2023
- المشاركات 26
- مستوى التفاعل 74
- النقاط 13
LOOPs
في هذا لقسم سنلقي نظره علي الحلقات المختلفه المتاحه وسوف ننقاش متي واين نستخدمهاالمقدمه
هناك 3 هياكل أساسية للحلقة في برمجة Bash والتي سنلقي نظرة عليها
واحدة من أسهل الحلقات للعمل معها هي حلقات whileWhile Loops
كود:
#!/bin/bash
# Basic while loop
counter=1
while [ $counter -le 10 ]
do
echo $counter
((counter++))
done
echo All done
** 1.
counter=1
: يتم تعيين قيمة المتغير counter
إلى 1. سيتم استخدام هذا المتغير لتتبع عدد التكرارات.while [ $counter -le 10 ]
: تبدأ حلقة التكرار (while loop
) هنا. تستمر الحلقة طالما قيمة المتغيرcounter
أقل من أو تساوي 10.do
: تبدأ الأوامر التي ستتم تنفيذها داخل الحلقة.echo $counter
: هذا السطر يقوم بطباعة قيمة المتغيرcounter
إلى الشاشة.((counter++))
: هذا السطر يزيد قيمة المتغيرcounter
بمقدار واحد في كل تكرار. هذا يعني أن قيمةcounter
ستزداد بمقدار واحد في كل مرة يتم فيها تنفيذ الحلقة.done
: يشير إلى نهاية الحلقة. عندما يصبح قيمة المتغيرcounter
أكبر من 10، ستتم إنهاء الحلقة والانتقال إلى السطر التالي.echo All done
: هذا السطر يقوم بطباعة “All done” إلى الشاشة بعد الانتهاء من تنفيذ الحلقة.
- **
الفرق هو أنه سينفذ الأوامر داخله حتى يصبح الاختبار صحيحًاUntil Loops
كود:
#!/bin/bash
# Basic until loop
counter=1
until [ $counter -gt 10 ]
do
echo $counter
((counter++))
done
echo All done
** 1.
#!/bin/bash
: هذا السطر يشير إلى مسار محرر النصوص الذي سيتم استخدامه لتشغيل السكربت، وفي هذه الحالة يشير إلى محرر النصوص Bash.counter=1
: يتم تعيين قيمة المتغيرcounter
إلى 1. سيتم استخدام هذا المتغير لتتبع عدد التكرارات.until [ $counter -gt 10 ]
: تبدأ حلقة التكرار (until loop
) هنا. تستمر الحلقة طالما قيمة المتغيرcounter
أقل من أو تساوي 10.do
: تبدأ الأوامر التي ستتم تنفيذها داخل الحلقة.echo $counter
: هذا السطر يقوم بطباعة قيمة المتغيرcounter
إلى الشاشة.((counter++))
: هذا السطر يزيد قيمة المتغيرcounter
بمقدار واحد في كل تكرار. هذا يعني أن قيمةcounter
ستزداد بمقدار واحد في كل مرة يتم فيها تنفيذ الحلقة.done
: يشير إلى نهاية الحلقة. عندما يصبح قيمة المتغيرcounter
أكبر من 10، ستتم إنهاء الحلقة والانتقال إلى السطر التالي.echo All done
: هذا السطر يقوم بطباعة “All done” إلى الشاشة بعد الانتهاء من تنفيذ الحلقة.**
ختلف حلقة for قليلاً عن الحلقتين السابقتين. ما يفعله هو قول لكل عنصر من العناصر في قائمة معينة ، قم بتنفيذ مجموعة معينة من الأوامر. يحتوي على النحو التاليFor Loops
ستأخذ حلقة for كل عنصر في القائمة (بالترتيب ، واحدًا تلو الآخر) ، وتعيين هذا العنصر كقيمة للمتغير var ، وتنفيذ الأوامر بين do و done ، ثم العودة إلى الأعلى ، والحصول على العنصر التالي في القائمة وتكرارها
يتم تعريف القائمة على أنها سلسلة من السلاسل ، مفصولة بمسافات.
هنا مثال بسيط للتوضيح
كود:
#!/bin/bash
# Basic for loop
names='Stan Kyle Cartman'
for name in $names
do
echo $name
done
echo All done
names='speed sh3ll python'
: يتم تعريف المتغير names
ويتم تعيينه للقيمة “speed sh3ll python”. تفصل الأسماء بمساحة واحدة.2.
for name in $names
: تبدأ حلقة التكرار (for loop
) هنا. في كل تكرار، سيتم تعيين قيمة المتغير name
لكل عنصر في المتغير names
.3.
do
: تبدأ الأوامر التي ستتم تنفيذها داخل الحلقة.4.
echo $name
: هذا السطر يقوم بطباعة قيمة المتغير name
إلى الشاشة.5.
done
: يشير إلى نهاية الحلقة. بمجرد انتهاء تنفيذ الأوامر داخل الحلقة لجميع العناصر في المتغير names
، ستنتهي الحلقة وتتجاوز إلى السطر التالي.6.
echo All done
: هذا السطر يقوم بطباعة “All done” إلى الشاشة بعد الانتهاء من تنفيذ الحلقة.مكننا أيضًا معالجة سلسلة من الأرقامRanges
كود:
#!/bin/bash
# Basic range in for loop
for value in {1..5}
do
echo $value
done
echo All don
من الممكن أيضًا تحديد قيمة للزيادة أو النقصان في كل مرة. يمكنك القيام بذلك عن طريق إضافة نقطتين أخريين (…) والقيمة خطوة بخطوة
كود:
#!/bin/bash
# Basic range with steps for loop
for value in {10..0..2}
do
echo $value
done
echo All done
كود:
#!/bin/bash
# Make a php copy of any html files
for value in $1/*.html
do
cp $value $1/$( basename -s .html $value ).php
done
في معظم الأوقات تمر حلقاتك بطريقة سلسة ومنتظمة. لكن في بعض الأحيان قد نحتاج إلى التدخل وتغيير جريانهم قليلاً. هناك بيانان قد نصدرهما للقيام بذلك.Controlling Loops: Break and Continue
Break
كود:
#!/bin/bash
# Make a backup set of files
for value in $1/*
do
used=$( df $1 | tail -1 | awk '{ print $5 }' | sed 's/%//' )
if [ $used -gt 90 ]
then
echo Low disk space 1>&2
break
fi
cp $value $1/backup/
done
يخبر بيان المتابعة Bash بالتوقف عن المرور خلال هذا التكرار للحلقة وبدء التكرار التالي. في بعض الأحيان توجد ظروف تمنعنا من المضي قدمًا. على سبيل المثال ، ربما نستخدم الحلقة لمعالجة سلسلة من الملفات ولكن إذا حدث ذلك على ملف ليس لدينا إذن القراءة لأنه لا ينبغي أن نحاول معالجته
كود:
#!/bin/bash
# Make a backup set of files
for value in $1/*
do
if [ ! -r $value ]
then
echo $value not readable 1>&2
continue
fi
cp $value $1/backup/
done
عند الاستدعاء ، سيأخذ جميع العناصر الموجودة في القائمة (على غرار الحلقات الأخرى ، هذه مجموعة من العناصر مفصولة بمسافة) ويقدمها على الشاشة برقم قبل كل عنصر. ستتم طباعة مطالبة بعد ذلك للسماح للمستخدم بتحديد رقم. عندما يختارون رقمًا ويضغطون على إدخال ، سيتم تعيين العنصر المقابل للمتغير var ويتم تشغيل الأوامر بين do و done. بمجرد الانتهاء ، سيتم عرض مطالبة مرة أخرى حتى يتمكن المستخدم من تحديد خيار آخر.
كود:
#!/bin/bash
# A simple menu system
names='python bash c++ ruby'
PS3='Select character: '
select name in $names
do
if [ $name == 'Quit' ]
then
break
fi
echo Hello $name
done
echo Bye
names='python bash c++ ruby'
: يتم تعريف المتغيرnames
ويتم تعيينه للقيمة “python bash c++ ruby”. تفصل الأسماء بمساحة واحدة.PS3='Select character: '
: يتم تعيين قيمة المتغيرPS3
للسؤال المعروض للمستخدم أثناء تشغيل الحلقةselect loop
.select name in $names
: تبدأ حلقة التكرار (select loop
) هنا. سيتم استخدامها لإنشاء قائمة اختيارية للمستخدم لتحديد عنصر من بين العناصر في المتغيرnames
.do
: تبدأ الأوامر التي ستتم تنفيذها داخل الحلقة.if [ $name == 'Quit' ]
: يتم التحقق من قيمة المتغيرname
إذا كانت تساوي “Quit” أو لا.then
: إذا كانت الشرطية السابقة صحيحة، يتم تنفيذ الأوامر الموجودة بعد الـthen
.break
: يتم استخدام هذا الأمر للخروج من الحلقة في حالة اختيار المستخدم الخيار “Quit”.fi
: ينهي الشرطية.echo Hello $name
: هذا السطر يقوم بطباعة “Hello” متبوعًا بقيمة المتغيرname
إلى الشاشة.done
: يشير إلى نهاية الحلقة. بمجرد انتهاء تنفيذ الأوامر داخل الحلقة، ستنتهي الحلقة وتتجاوز إلى السطر التالي.echo Bye
: يتم طباعة “Bye” إلى الشاشة بعد الانتهاء من تنفيذ الحلقة
قم بإنشاء برنامج نصي بسيط يقوم بطباعة الأرقام من 1 إلى 10 (كل منها في سطر منفصل) وما إذا كانت الأرقام زوجية أو فردية
المرفقات
التعديل الأخير بواسطة المشرف: