مضى على الشبكة و يوم من العطاء.

Learn Loops الدرس السادس

  • بادئ الموضوع بادئ الموضوع speed
  • تاريخ البدء تاريخ البدء

speed

./عضو جديد

السمعة:

في هذا لقسم سنلقي نظره علي الحلقات المختلفه المتاحه وسوف ننقاش متي واين نستخدمها

هناك 3 هياكل أساسية للحلقة في برمجة Bash والتي سنلقي نظرة عليها

واحدة من أسهل الحلقات للعمل معها هي حلقات while
image
ستلاحظ أن هذا مشابه الاختبار بين قوسين مربعين []. if statements
image
في المثال التالي سنطبع الأرقام من 1 إلى 10
كود:
    #!/bin/bash
    # Basic while loop
    counter=1
    while [ $counter -le 10 ]
    do
    echo $counter
    ((counter++))
    done
    echo All done
** 1. counter=1: يتم تعيين قيمة المتغير counter إلى 1. سيتم استخدام هذا المتغير لتتبع عدد التكرارات.
  1. while [ $counter -le 10 ]: تبدأ حلقة التكرار (while loop) هنا. تستمر الحلقة طالما قيمة المتغير counter أقل من أو تساوي 10.
  2. do: تبدأ الأوامر التي ستتم تنفيذها داخل الحلقة.
  3. echo $counter: هذا السطر يقوم بطباعة قيمة المتغير counter إلى الشاشة.
  4. ((counter++)): هذا السطر يزيد قيمة المتغير counter بمقدار واحد في كل تكرار. هذا يعني أن قيمة counter ستزداد بمقدار واحد في كل مرة يتم فيها تنفيذ الحلقة.
  5. done: يشير إلى نهاية الحلقة. عندما يصبح قيمة المتغير counter أكبر من 10، ستتم إنهاء الحلقة والانتقال إلى السطر التالي.
  6. echo All done: هذا السطر يقوم بطباعة “All done” إلى الشاشة بعد الانتهاء من تنفيذ الحلقة.
  1. **
image
الفرق هو أنه سينفذ الأوامر داخله حتى يصبح الاختبار صحيحًا
image
كود:
    #!/bin/bash
    # Basic until loop
    counter=1
    until [ $counter -gt 10 ]
    do
    echo $counter
    ((counter++))
    done
    echo All done
** 1. #!/bin/bash: هذا السطر يشير إلى مسار محرر النصوص الذي سيتم استخدامه لتشغيل السكربت، وفي هذه الحالة يشير إلى محرر النصوص Bash.
  1. counter=1: يتم تعيين قيمة المتغير counter إلى 1. سيتم استخدام هذا المتغير لتتبع عدد التكرارات.
  2. until [ $counter -gt 10 ]: تبدأ حلقة التكرار (until loop) هنا. تستمر الحلقة طالما قيمة المتغير counter أقل من أو تساوي 10.
  3. do: تبدأ الأوامر التي ستتم تنفيذها داخل الحلقة.
  4. echo $counter: هذا السطر يقوم بطباعة قيمة المتغير counter إلى الشاشة.
  5. ((counter++)): هذا السطر يزيد قيمة المتغير counter بمقدار واحد في كل تكرار. هذا يعني أن قيمة counter ستزداد بمقدار واحد في كل مرة يتم فيها تنفيذ الحلقة.
  6. done: يشير إلى نهاية الحلقة. عندما يصبح قيمة المتغير counter أكبر من 10، ستتم إنهاء الحلقة والانتقال إلى السطر التالي.
  7. echo All done: هذا السطر يقوم بطباعة “All done” إلى الشاشة بعد الانتهاء من تنفيذ الحلقة.**
ختلف حلقة for قليلاً عن الحلقتين السابقتين. ما يفعله هو قول لكل عنصر من العناصر في قائمة معينة ، قم بتنفيذ مجموعة معينة من الأوامر. يحتوي على النحو التالي
ستأخذ حلقة for كل عنصر في القائمة (بالترتيب ، واحدًا تلو الآخر) ، وتعيين هذا العنصر كقيمة للمتغير var ، وتنفيذ الأوامر بين do و done ، ثم العودة إلى الأعلى ، والحصول على العنصر التالي في القائمة وتكرارها


يتم تعريف القائمة على أنها سلسلة من السلاسل ، مفصولة بمسافات.

هنا مثال بسيط للتوضيح

كود:
    #!/bin/bash
    # Basic for loop
    names='Stan Kyle Cartman'
    for name in $names
    do
    echo $name
    done
    echo All done
1. 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” إلى الشاشة بعد الانتهاء من تنفيذ الحلقة.

مكننا أيضًا معالجة سلسلة من الأرقام
كود:
#!/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
image
أحد أكثر التطبيقات المفيدة للحلقات for هو معالجة مجموعة من الملفات. للقيام بذلك قد نستخدم أحرف البدل. لنفترض أننا نريد تحويل سلسلة من ملفات .html إلى ملفات .php
كود:
    #!/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
Continue
يخبر بيان المتابعة 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
Select
image

عند الاستدعاء ، سيأخذ جميع العناصر الموجودة في القائمة (على غرار الحلقات الأخرى ، هذه مجموعة من العناصر مفصولة بمسافة) ويقدمها على الشاشة برقم قبل كل عنصر. ستتم طباعة مطالبة بعد ذلك للسماح للمستخدم بتحديد رقم. عندما يختارون رقمًا ويضغطون على إدخال ، سيتم تعيين العنصر المقابل للمتغير 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
  1. names='python bash c++ ruby': يتم تعريف المتغير names ويتم تعيينه للقيمة “python bash c++ ruby”. تفصل الأسماء بمساحة واحدة.
  2. PS3='Select character: ': يتم تعيين قيمة المتغير PS3 للسؤال المعروض للمستخدم أثناء تشغيل الحلقة select loop.
  3. select name in $names: تبدأ حلقة التكرار (select loop) هنا. سيتم استخدامها لإنشاء قائمة اختيارية للمستخدم لتحديد عنصر من بين العناصر في المتغير names.
  4. do: تبدأ الأوامر التي ستتم تنفيذها داخل الحلقة.
  5. if [ $name == 'Quit' ]: يتم التحقق من قيمة المتغير name إذا كانت تساوي “Quit” أو لا.
  6. then: إذا كانت الشرطية السابقة صحيحة، يتم تنفيذ الأوامر الموجودة بعد الـ then.
  7. break: يتم استخدام هذا الأمر للخروج من الحلقة في حالة اختيار المستخدم الخيار “Quit”.
  8. fi: ينهي الشرطية.
  9. echo Hello $name: هذا السطر يقوم بطباعة “Hello” متبوعًا بقيمة المتغير name إلى الشاشة.
  10. done: يشير إلى نهاية الحلقة. بمجرد انتهاء تنفيذ الأوامر داخل الحلقة، ستنتهي الحلقة وتتجاوز إلى السطر التالي.
  11. echo Bye: يتم طباعة “Bye” إلى الشاشة بعد الانتهاء من تنفيذ الحلقة
image
Activities

قم بإنشاء برنامج نصي بسيط يقوم بطباعة الأرقام من 1 إلى 10 (كل منها في سطر منفصل) وما إذا كانت الأرقام زوجية أو فردية
 

المرفقات

  • image.png
    image.png
    874 بايت · المشاهدات: 159
  • image.png
    image.png
    35.4 KB · المشاهدات: 171
التعديل الأخير بواسطة المشرف:
  • Like
التفاعلات: STORM

آخر المشاركات

عودة
أعلى