في برمجة الشل، تؤدي جمل الشرط في Bash دوراً محورياً، إذ تتيح للمبرمجين تحديد مسارات تنفيذ مختلفة بناءً على حالات متعددة. باختصار، تمكّننا جمل الشرط من اتخاذ قرارات داخل سكريبتات Bash، بالاستناد إلى عوامل كنتائج الاختبارات، أو مدخلات المستخدم، أو حالة النظام. إنها الأداة التي تتيح لك التعامل مع مختلف الاحتمالات.
عند كتابة سكريبت Bash، تتبع جملة الشرط if بنية محددة. تبدأ عادةً بالكلمة المفتاحية "if"، يعقبها الشرط المراد تقييمه، ثم الكلمة المفتاحية "ثم"، فأمر واحد أو أكثر يُنفَّذ عند تحقق الشرط.
لمزيد من المرونة، يمكن أن تتضمن جملة الشرط if اختيارياً كلمة "elif" (else if)، وهي تدخل حيز التنفيذ حين لا يتحقق الشرط الأول، فتتيح اختبار شرط إضافي والتصرف وفقاً لنتيجته. علاوة على ذلك، يمكن إضافة جملة "else" اختيارية تُنفَّذ حين لا يتحقق أيٌّ من الشروط.
بالجمع بين جمل الشرط if وبقية أوامر Bash وإمكانيات برمجة الشل، يستطيع المبرمجون كتابة سكريبتات متقدمة قادرة على أتمتة مهام ومعالجات معقدة. تابع القراءة لتتعرف أكثر على جملة الشرط if في Bash، بما يشمل بنيتها وحالات الاستخدام والأمثلة العملية!
بنية جملة الشرط If في Bash
تشير بنية Bash إلى القواعد التي تحكم تركيب الأوامر والسكريبتات المكتوبة بلغة Bash وقواعدها. تشتمل بنية Bash على عناصر وتركيبات متنوعة، منها:
- الأوامر: هي البرامج القابلة للتنفيذ أو الدوال المدمجة في الشل، وتُستخدم لتنفيذ مهام محددة. ستمضي معظم وقتك في برمجة Bash وأنت تتعامل مع هذه الأسطر.
- الوسيطات: هي القيم التي تُمرَّر إلى الأوامر لتحديد الخيارات أو المعاملات أو البيانات المدخلة. فكّر فيها كشروط تضبط طريقة تنفيذ الأمر.
- المتغيرات: هي رموز تمثل قيماً يمكن تعيينها أو التعامل معها أو استخدامها في التعبيرات. وتُستخدم على نطاق واسع لتحديد القيم التي تعتمد عليها الأوامر والوسيطات.
- إعادة التوجيه: هي عملية توجيه المدخلات أو المخرجات أو رسائل الخطأ من وإلى الملفات أو الأجهزة أو الأوامر الأخرى. من دونها، يرتفع خطر توجيه أوامرك إلى وجهة خاطئة مما قد يُفسد الكود بأكمله.
- أنابيب: هي آلية تربط مخرجات أمر ما بمدخلات أمر آخر. تُستخدم عادةً لتنفيذ أسطر أوامر شرطية متقدمة في البرامج الكبيرة، وبناء أسطر أوامر متشابكة.
- هياكل التحكم: هي تركيبات تتحكم في تسلسل تنفيذ الأوامر، كالحلقات والشروط والدوال. فهم هذه التركيبات أساسي لكتابة أسطر أوامر متقدمة، ويضيف عمقاً إضافياً إلى الكود الخاص بك.
- تعليقات: هي تعليقات يتجاهلها الـ shell، وتُستخدم لتوثيق الكود أو شرح ما يفعله. تُعدّ مرجعاً مهماً عند التحليل وتصحيح الأخطاء، لا سيما في مشاريع الفرق.
يجب كتابة صياغة Bash بشكل صحيح حتى يتمكن الـ shell من تفسير الأوامر وتنفيذها. أخطاء الصياغة قد تؤدي إلى رسائل خطأ أو سلوك غير متوقع.
إليك جملة if في Bash أثناء التطبيق:
if condition then command1 command2 ... commandN elif condition2 then commandA commandB ... commandC else commandX commandY ... commandZ fi
في هذا المثال، يشير "condition" إلى اختبار ينتج نتيجة إما صحيحة أو خاطئة. إذا كان الشرط صحيحاً، تُنفَّذ الأوامر المحددة بعد الكلمة المفتاحية "then". إذا أردنا تقييم شرط إضافي، نستخدم الكلمة المفتاحية "elif" لذلك، إذ تتيح النظر في احتمال آخر. أما إذا لم يكن أيٌّ من الشروط صحيحاً، فتُنفَّذ الأوامر المحددة بعد الكلمة المفتاحية "else" كخيار احتياطي. وأخيراً، تُشير الكلمة المفتاحية "fi" إلى نهاية جملة if.
كيف تعمل جمل Bash؟
في Bash scripting، تؤدي جملة if دوراً محورياً في توجيه تدفق السكريبت بناءً على نتيجة اختبار شرطي. وظيفتها تقييم شرط معين، وتنفيذ مجموعة محددة من الأوامر إذا ثبت أن هذا الشرط صحيح.
إليك ما يحدث عادةً عند استخدام جملة if داخل سكريبت Bash: يُقيِّم السكريبت الشرط الوارد في جملة if. إذا كان الشرط صحيحاً، تُنفَّذ الأوامر الموجودة في كتلة "then".
أما إذا كان الشرط خاطئاً، ينتقل السكريبت لتقييم شروط elif الإضافية إن وُجدت. إذا كان أي منها صحيحاً، تُنفَّذ أوامر كتلة elif المقابلة. وإذا لم يكن أيٌّ من الشروط المحددة في if وelif صحيحاً، ينتقل السكريبت إلى تنفيذ الأوامر الموجودة في كتلة else، إن كانت موجودة.
تعمل جملة if في جوهرها على تمكين اتخاذ القرار داخل السكريبت، إذ تتيح له سلوك مسارات تنفيذ مختلفة بحسب نتيجة الاختبار. ويمكن أن يأخذ الاختبار في الاعتبار عوامل متعددة، كنتيجة أمر ما أو قيمة متغير معين.
جملة Bash If بالتطبيق
لنخرج من الإطار النظري ونرَ كيف تُستخدم جملة if في Bash أثناء التطوير الفعلي. إليك مثالاً يوضح كيفية عملها:
#!/bin/bash # set a variable x=5 # evaluate the variable if [ $x -gt 4 ] then echo "x is greater than 4." else echo "x is less than or equal to 4." fi
في هذا المثال، تُقيِّم جملة if قيمة المتغير x. إذا كانت x أكبر من 4، يُنفِّذ السكريبت أمر طباعة "x is greater than 4". وإذا كانت x أصغر من أو تساوي 4، يُنفِّذ السكريبت أمر طباعة "x is less than or equal to 4".
التعرف على أنواع جمل Bash If وصياغة الأوامر المرتبطة بها
بعد أن اطلعت على جملة Bash If الأساسية وكيفية عملها، لنتعمق أكثر في أنواعها والأوامر المرتبطة بها: Basic If Statements وNested If Statements وBash If Else وIf Elif Else وCase Statements، كلٌّ على حدة.
عبارات If الأساسية
لنبدأ بجملة if الأساسية في Bash. تتحقق جملة if من صحة شرط معين، وتُنفِّذ كتلة الأوامر المرتبطة به في حال كان الشرط صحيحاً. إليك الصياغة:
if [ condition ] then commands fi
هنا، يُقيِّم السكريبت الشرط، فإن كان صحيحاً نُفِّذت الأوامر المحددة. وإن كان خاطئاً، ينتقل السكريبت إلى الأمر التالي دون تنفيذ ما داخل كتلة "then".
عبارات If متداخلة
جملة if المتداخلة، كما يُشير الاسم، هي جملة if موجودة داخل جملة if أخرى. يتيح هذا التداخل إجراء اختبارات وتحليلات أكثر تعقيداً داخل السكريبت. إليك مثالاً:
if [ condition1 ]
then
if [ condition2 ]
then
commands
fi
fi
يتضح من الأوامر أن السكريبت يُقيِّم condition1 أولاً. إذا تحقق condition1، ينتقل إلى تقييم condition2. وإذا تحقق condition2 أيضاً، يُنفِّذ السكريبت الأوامر المطلوبة.
جمل if else في Bash
تتيح لك جملة if else في Bash اتخاذ قرارات داخل السكريبت بناءً على ما إذا كان الشرط صحيحاً أم خاطئاً، مما يُمكّن من تنفيذ أكثر تعقيداً للأكواد وفق السياق. إليك شكل البنية العامة:
if [ condition ] then commands1 else commands2 fi
تضمن هذه البنية أنه إذا تحقق الشرط، ينفّذ السكريبت فوراً "commands1". أما إذا كان الشرط خاطئاً، فسيُنفّذ "commands2" عوضاً عن ذلك.
جمل if elif else
في بعض الأحيان تحتاج إلى التعامل مع شروط متعددة ونتائجها المختلفة. تتيح لك جملة if elif else تحقيق ذلك بدقة. انظر إلى الصياغة التالية:
if [ condition1 ] then commands1 elif [ condition2 ] then commands2 else commands3 fi
هنا يقيّم السكريبت الشرط condition1 أولاً. إذا تحقق، يُنفَّذ commands1 فوراً. أما إذا كان condition1 خاطئاً، ينتقل السكريبت إلى تقييم condition2. فإذا تحقق condition2، يُنفَّذ commands2. وإذا تبيّن أن كلاً من condition1 وcondition2 خاطئان، ينتقل السكريبت إلى البديل وهو تنفيذ commands3.
جمل case
يوفر Bash جملة case التي تعمل بشكل مشابه لجملة switch الموجودة في لغات البرمجة الأخرى. وهي تُتيح تنفيذ مجموعات مختلفة من الأوامر بناءً على قيمة متغير معين. إليك شكل البنية:
case expression in pattern1) commands1;; pattern2) commands2;; pattern3) commands3;; *) default commands;; esac
هنا يقيّم السكريبت المتغير expression ويقارنه بأنماط مختلفة. عند تطابق أحد الأنماط، تُنفَّذ مجموعة الأوامر المقابلة له. أما إذا لم يُعثر على أي تطابق، تُنفَّذ الأوامر الافتراضية. ويعمل النمط (*) كحرف بدل يطابق أي قيمة لم يُغطِّها الأنماط الأخرى.
العوامل المنطقية في Bash
من أبرز عناصر جمل if في Bash هي العوامل المنطقية. تُمكّنك هذه العوامل من دمج شروط متعددة واتخاذ قرارات بناءً على صحة أو خطأ تلك الشروط مجتمعةً. يدعم Bash ثلاثة عوامل منطقية رئيسية للاستخدام في جمل if. فيما يلي أمثلة على الأنواع الثلاثة الرئيسية.
- AND في Bash (&&):
if [ $age -ge 18 ] && [ "$citizen" == "yes" ]; then echo "You meet the criteria for voting." fi
- OR المنطقي (||):
if [ "$status" == "active" ] || [ "$role" == "admin" ]; then echo "Access granted." fi
- لا يساوي:
if(( ! $a == "true" )) then echo "a" was initially false. else echo "a" was initially true. fi
خلاصة
في هذا المقال قدّمنا دليلاً تمهيدياً حول جمل if في Bash وكيفية استخدامها. كما تناولنا كيف يمكن لهذه الجمل أن تجعل الكود أكثر نظافة ووظيفية. باستخدام هذه الجمل الشرطية باحترافية، يمكنك بناء سكريبتات قادرة على التعامل مع مهام معقدة واتخاذ قرارات متعددة.
هل أنت جديد في عالم Linux؟ دعنا نكون دليلك في هذه الرحلة! خيارنا Linux VPS هو نقطة البداية المثالية للمبتدئين، إذ يجمع بين البساطة والقدرة العالية. بفضل الواجهات سهلة الاستخدام والدعم المتخصص، ستجد أنه من السهل الاستفادة من إمكانيات خادم Linux. سواء كنت تُنشئ موقعاً إلكترونياً أو تختبر تطبيقات أو تستكشف عالم Linux، يوفر لك VPS الخاص بنا بيئة آمنة وخالية من التعقيدات. ابدأ رحلتك في عالم Linux بثقة، واطّلع على خيارات VPS المتاحة لدينا اليوم.
احصل على VPS اقتصادي أو متميز يعمل بنظام Linux لاستضافة موقعك الإلكتروني أو سطح المكتب البعيد، بأفضل الأسعار المتاحة. يعمل VPS على Linux KVM لكفاءة أعلى، ويستند إلى أجهزة قوية مع تخزين NVMe SSD لسرعة أكبر.
اقرأ المزيدالأسئلة الشائعة
هل يمكنني استخدام العوامل المنطقية في جمل if في Bash؟
نعم، يمكنك استخدام العوامل المنطقية مثل '&' و '||' في جمل if في Bash. على سبيل المثال، if [ $var -gt 0 ] && [ $var -lt 10 ]; then … سيُنفِّذ كتلة الكود إذا كان $var أكبر من 0 وأصغر من 10.
هل يمكنني استخدام شروط متعددة في جملة if واحدة؟
نعم، يمكنك استخدام شروط متعددة في جملة if واحدة في Bash عبر المعاملات المنطقية مثل -a (AND) أو -o (OR) لدمجها. على سبيل المثال، if [ $var -gt 0 -a $var -lt 10 ]; then … سيُنفِّذ كتلة الكود إذا كان $var أكبر من 0 وأصغر من 10 في آنٍ واحد.
هل يمكنني استخدام إحلال الأوامر في جمل if في Bash؟
نعم، يمكنك استخدام إحلال الأوامر في جمل if في Bash بتضمين الأمر داخل $() أو backticks (”). على سبيل المثال، if [ $(whoami) == "root" ]; then … سيُنفِّذ كتلة الكود إذا كان المستخدم الحالي هو root.
[[ مقابل [ مقابل ( مقابل ((: ما الفرق بين هذه المعاملات في Bash؟
باختصار: [[ يُستخدم للاختبار الشرطي المتقدم. [ يُستخدم للاختبار الشرطي الأساسي. ( يُستخدم لتجميع الأوامر في subshell وتنفيذها. (( يُستخدم للعمليات الحسابية.