Menu
CoddyTech

حلقة While التكرارية

جزء من قسم الأساسيات في رحلة Terminal على Coddy. الدرس 72 من 82.

تكون حلقة for رائعة عندما تعرف بالضبط العناصر التي تريد التكرار عليها. ولكن ماذا لو أردت مواصلة التكرار إلى أن يتغير شرط معين؟ هنا يأتي دور حلقة while.

تستمر حلقة while في العمل ما دام شرطها صحيحًا. إليك البنية الأساسية:

#!/bin/bash
count=1
while [ $count -le 5 ]; do
    echo "Count: $count"
    count=$((count + 1))
done

يطبع هذا البرنامج النصي الأرقام من 1 إلى 5.

تتحقق الحلقة مما إذا كان count أقل من أو يساوي 5. إذا كان ذلك صحيحًا، فإنها تنفذ جسم الحلقة، وتزيد العداد باستخدام $((...)) لإجراء العمليات الحسابية، ثم تتحقق مرة أخرى.

بمجرد أن تصل count إلى 6، يصبح الشرط خاطئًا وتتوقف الحلقة.

تكون حلقات while مثالية عندما لا تعرف مسبقًا عدد التكرارات التي تحتاج إليها. على سبيل المثال، قد تستمر في طلب إدخال حتى يكتب المستخدم "quit":

#!/bin/bash
input=""
while [ "$input" != "quit" ]; do
    read -p "Enter command (quit to exit): " input
    echo "You entered: $input"
done

كن حذرًا عند استخدام حلقات while. إذا لم يصبح الشرط خطأً أبدًا، فستستمر الحلقة في العمل إلى الأبد.

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

challenge icon

التحدي

سهل

أنشئ سكربت shell باسم counter.sh يستخدم حلقة while لطباعة الأرقام من 1 إلى 4.

ينبغي أن يقوم السكربت بما يلي:

  1. يبدأ بسطر shebang (#!/bin/bash)
  2. ينشئ متغيرًا باسم num بالقيمة الأولية 1
  3. يستخدم حلقة while تستمر ما دامت قيمة num أقل من أو تساوي 4
  4. داخل الحلقة، يطبع الرقم الحالي بالتنسيق التالي: Number: [num]
  5. يزيد قيمة num بمقدار 1 بعد كل تكرار باستخدام $((num + 1))

اجعل السكربت قابلًا للتنفيذ وشغّله. ينبغي أن يكون الناتج:

Number: 1
Number: 2
Number: 3
Number: 4

تلميح: استخدم -le للمقارنة «أقل من أو يساوي». تذكّر زيادة العداد داخل الحلقة باستخدام num=$((num + 1)) لتجنب حلقة لا نهائية. أنهِ حلقة while باستخدام done.

جرّب بنفسك

الطرفية
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس الأساسيات

تدرّب بنفسك: Playground لـ Terminal