جملة If الشرطية
جزء من قسم الأساسيات في رحلة Terminal على Coddy — الدرس 70 من 82.
حتى الآن، تقوم البرامج النصية (scripts) الخاصة بك بتشغيل كل أمر من الأعلى إلى الأسفل دون أي اتخاذ للقرار. ولكن ماذا لو كنت تريد أن يقوم البرنامج النصي الخاص بك بأشياء مختلفة بناءً على شروط معينة؟ هنا يأتي دور جملة if.
تسمح جملة if لبرنامجك النصي باتخاذ القرارات. فهي تتحقق مما إذا كان الشرط صحيحاً، وإذا كان الأمر كذلك، فإنها تقوم بتشغيل كتلة من البرمجية. إليك الهيكل الأساسي:
#!/bin/bash
age=18
if [ $age -ge 18 ]; then
echo "You are an adult"
fiيوضع الشرط داخل أقواس مربعة مع وجود مسافات حوله. تحدد الكلمة المفتاحية then بداية الكود المراد تشغيله، وينهي fi (كلمة if مكتوبة بالعكس) العبارة.
يمكنك أيضاً معالجة الحالة عندما يكون الشرط خاطئاً باستخدام else:
#!/bin/bash
age=15
if [ $age -ge 18 ]; then
echo "You are an adult"
else
echo "You are a minor"
fiتشمل معاملات المقارنة الشائعة للأرقام -eq (يساوي)، و -ne (لا يساوي)، و -gt (أكبر من)، و -lt (أصغر من)، و -ge (أكبر من أو يساوي)، و -le (أصغر من أو يساوي). بالنسبة للسلاسل النصية، استخدم = للمساواة و != لعدم المساواة.
تذكر دائماً تضمين مسافات داخل الأقواس ووضع متغيراتك بين علامات اقتباس لتجنب الأخطاء المتعلقة بالقيم الفارغة.
التحدي
سهلقم بإنشاء نص برمجي لـ shell يسمى check_score.sh يستخدم جملة if لتقييم درجة الاختبار.
يجب أن يقوم النص البرمجي الخاص بك بما يلي:
- البدء بسطر shebang (
#!/bin/bash) - إنشاء متغير يسمى
scoreبقيمة75 - استخدام جملة if للتحقق مما إذا كانت الدرجة أكبر من أو تساوي 70
- إذا كانت النتيجة صحيحة، اطبع:
You passed! - إذا كانت النتيجة خاطئة، اطبع:
You failed.
اجعل النص البرمجي قابلاً للتنفيذ وقم بتشغيله. بما أن الدرجة هي 75، يجب أن يكون مخرجك:
You passed!تلميح: تذكر استخدام
-geللمقارنة "أكبر من أو يساوي"، وتضمين مسافات داخل الأقواس المربعة، وإنهاء جملة if بكلمةfi.
ورقة مرجعية
تسمح جملة if للسكربتات باتخاذ القرارات بناءً على الشروط:
#!/bin/bash
age=18
if [ $age -ge 18 ]; then
echo "You are an adult"
fiيوضع الشرط داخل أقواس مربعة مع وجود مسافات حوله. استخدم then لتحديد بداية كتلة الكود و fi لإنهاء الجملة.
استخدم else للتعامل مع الحالات التي يكون فيها الشرط خاطئاً:
#!/bin/bash
age=15
if [ $age -ge 18 ]; then
echo "You are an adult"
else
echo "You are a minor"
fiمعاملات المقارنة الشائعة:
- الأرقام:
-eq(يساوي)،-ne(لا يساوي)،-gt(أكبر من)،-lt(أصغر من)،-ge(أكبر من أو يساوي)،-le(أصغر من أو يساوي) - النصوص:
=(تساوي)،!=(عدم تساوي)
احرص دائماً على تضمين مسافات داخل الأقواس ووضع المتغيرات بين علامات اقتباس لتجنب الأخطاء مع القيم الفارغة.
جرّب بنفسك
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس الأساسيات
2التنقل
عرض مسار المجلد الحاليعرض الملفاتتغيير المجلدالمسارات المطلقة مقابل المسارات النسبيةمجلد المنزل ومجلد الجذرخلاصة - حدد مسارك8إعادة التوجيه
المخرجات القياسيةالكتابة فوق ملفالإضافة إلى ملفالمدخلات القياسيةالخطأ القياسيمراجعة - بناء سجل الأحداث11الأذونات
فهم الأذوناتقراءة الأذوناتChmod باستخدام الأرقامChmod باستخدام الرموزملكية الملفاتملخص - إحكام الحماية14مشروع سكربت النسخ الاحتياطي
نظرة عامة على المشروعالحصول على مسار المصدر