0Pricing
Linux Command Line & Bash Scripting Mastery · درس

معالجة الأخطاء وحالة الخروج

طبّقوا فحصًا متينًا للأخطاء في scripts بفهم حالات الخروج واستخدام 'set -e' والمنطق الشرطي.

معالجة الأخطاء وحالة الخروج درس مجاني في Linux Command Line & Bash Scripting Mastery على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Linux Command Line & Bash Scripting Mastery، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Linux Command Line & Bash Scripting Mastery 4 دروس في المجموع.

مرحبًا بكم في معالجة الأخطاء

في هذا الدرس، سنجعل برامج Bash النصية أكثر متانة من خلال تعلم كيفية معالجة الأخطاء بفعالية.

تخيلوا برنامجًا نصيًا ينفذ خطوات عديدة. إذا فشلت إحدى الخطوات، فسترغبون في أن يتوقف البرنامج النصي أو أن تعرفوا على الأقل بوقوع الفشل، أليس كذلك؟ هنا تأتي معالجة الأخطاء!

ما حالة الخروج؟

يعيد كل أمر تشغلونه في صدفة Linux حالة خروج (تُسمى أحيانًا رمز الخروج أو رمز الإرجاع).

  • تعني الحالة 0 أن الأمر اكتمل بنجاح.
  • تشير الحالة غير الصفرية (مثل 1 أو 2 أو 127) إلى نوع من الفشل أو الخطأ.

إنها أشبه بإشارة مرور لأوامركم!

فحص حالة الخروج يدويًا

يمكنكم فحص حالة خروج آخر أمر نُفِّذ باستخدام المتغير الخاص $?.

لنجرب أمرًا ناجحًا وآخر فاشلًا:

#!/bin/bash

echo "Hello CoddyKit"
echo "Exit status: $?"

ls non_existent_file.txt
echo "Exit status: $?"

فحص الأخطاء الشرطي الأساسي

تتيح معرفة حالة الخروج لبرنامجكم النصي اتخاذ القرارات. يمكنكم استخدام عبارة if لفحص $? والاستجابة للأخطاء.

وهذا يجعل برنامجكم النصي واعيًا بالمشكلات ويمنعه من متابعة التنفيذ باستخدام بيانات غير صالحة.

#!/bin/bash

ls non_existent_file.txt

if [ $? -ne 0 ]; then
  echo "Error: The 'ls' command failed!"
  exit 1 # Exit script with an error code
fi

echo "This line will not run if 'ls' fails."

قوة `set -e`

قد يكون فحص $? يدويًا بعد كل أمر أمرًا مملًا. وهنا تظهر فائدة set -e!

عند بدء برنامج نصي باستخدام set -e، سيخرج Bash فورًا إذا انتهى أي أمر (ليس جزءًا من اختبار شرطي) بحالة غير صفرية.

إنها بمثابة مفتاح أمان شامل لبرامجكم النصية!

تطبيق `set -e` عمليًا

لنرَ كيف تمنع set -e برنامجًا نصيًا من متابعة التنفيذ بعد وقوع خطأ. لاحظوا كيف لا يتم الوصول مطلقًا إلى أمر echo الأخير.

#!/bin/bash
set -e

echo "Starting important tasks..."

# This command will fail
cp /non_existent_source /tmp/destination

echo "This line will NOT be printed if 'cp' fails."
echo "All tasks completed successfully."

متى لا توقف `set -e` التنفيذ؟

تُعدّ set -e قوية، لكن لها قواعد محددة. فهي لا تتسبب في خروج البرنامج النصي إذا كان الأمر الفاشل:

  • جزءًا من شرط if أو while.
  • جزءًا من قائمة && أو || (باستثناء الأمر الأخير).
  • مسبوقًا بـ !.

صُممت هذه السياقات لاختبار النجاح أو الفشل، لذلك لا تتدخل `set -e` فيها.

دمج `set -e` مع `||`

قد ترغبون أحيانًا في عرض رسالة خطأ مخصصة قبل الخروج. يمكنكم دمج set -e مع عامل || (أو).

command || { echo "Error message"; exit 1; }

إذا فشل command، فسيُنفَّذ الجزء الذي يلي ||، ويطبع رسالتكم، ثم يخرج برمز خطأ محدد.

#!/bin/bash
set -e

echo "Attempting to find a file..."

find /non_existent_dir -name "*.txt" || \
  { echo "ERROR: Could not search in /non_existent_dir!"; exit 1; }

echo "Script continued (this won't print if 'find' fails)."

معالجة رموز الخروج المحددة

بينما يعني 0 النجاح ويعني الرقم غير الصفري الفشل، قد تحمل الرموز غير الصفرية المحددة معاني مختلفة.

  • 1: خطأ عام.
  • 2: إساءة استخدام أوامر الصدفة المضمّنة.
  • 127: الأمر غير موجود.

يمكنكم استخدام if [ $? -eq 127 ] للتحقق من أنواع فشل محددة، مما يتيح تقديم ملاحظات أكثر ملاءمة بشأن الأخطاء.

اختبار معالجة الأخطاء

أي العبارات التالية حول حالات خروج Bash ومعالجة الأخطاء صحيحة؟

مراجعة: البرامج النصية المتينة

لقد تعلمتم كيفية جعل برامج Bash النصية أكثر موثوقية بكثير!

  • يعيد كل أمر حالة خروج (0 عند النجاح، وقيمة غير صفرية عند الفشل).
  • يعرض المتغير $? حالة خروج الأمر الأخير.
  • تُعدّ set -e أداة قوية تخرج برنامجكم النصي تلقائيًا عند معظم حالات فشل الأوامر.
  • ادمجوا set -e مع || لعرض رسائل أخطاء مخصصة.

سيساعدكم استخدام هذه التقنيات على كتابة برامج نصية أكثر احترافية واستقرارًا.

الأسئلة الشائعة

هل درس «معالجة الأخطاء وحالة الخروج» مجاني؟

نعم — نص درس «معالجة الأخطاء وحالة الخروج» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Linux Command Line & Bash Scripting Mastery، انتقل إلى CoddyKit PRO. تتضمن دورة Linux Command Line & Bash Scripting Mastery 4 دروس في المجموع.

ماذا ستتعلم في «معالجة الأخطاء وحالة الخروج»؟

طبّقوا فحصًا متينًا للأخطاء في scripts بفهم حالات الخروج واستخدام 'set -e' والمنطق الشرطي. تتمرن على Linux Command Line & Bash Scripting Mastery مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Linux Command Line & Bash Scripting Mastery؟

لا تُشترط خبرة سابقة. Linux Command Line & Bash Scripting Mastery على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.

كم من الوقت يستغرق درس «معالجة الأخطاء وحالة الخروج»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Linux Command Line & Bash Scripting Mastery هذا؟

نعم. كل درس في Linux Command Line & Bash Scripting Mastery يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. تصحيح أخطاء Bash Scripts (set -x، trap)
  2. معالجة الأخطاء وحالة الخروج
  3. أفضل ممارسات كتابة Scripts والفحص البرمجي
  4. اختبار نصوص Bash باستخدام Bats
← العودة إلى Linux Command Line & Bash Scripting Mastery