تصحيح أخطاء Bash Scripts (set -x، trap)
اكتشفوا أساليب تصحيح أخطاء Bash scripts، بما في ذلك تتبّع التنفيذ واستخدام 'trap' لمعالجة الأخطاء.
تصحيح أخطاء Bash Scripts (set -x، trap) درس مجاني في DevOps Bootcamp على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في DevOps Bootcamp، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة DevOps Bootcamp 4 دروس في المجموع.
لماذا تصحّحون أخطاء البرامج النصية؟
حتى أفضل البرامج النصية قد تحتوي على أخطاء! وتصحيح الأخطاء هو عملية العثور على هذه الأخطاء وإصلاحها.
إنها مهارة بالغة الأهمية لأي مطوّر، إذ تساعدكم على فهم ما ينفذه البرنامج النصي خطوةً بخطوة، وتحديد المواضع التي قد يحدث فيها الخطأ.
في هذا الدرس، ستتعلّمون أدوات Bash قوية لتتبّع التنفيذ والتعامل مع الأحداث غير المتوقعة.
تتبّع برنامجك النصي باستخدام `set -x`
تُعدّ set -x إحدى أبسط أدوات تصحيح الأخطاء وأكثرها فعالية في Bash. فهي تفعّل تتبّع الأوامر.
- عند تفعيلها، يطبع Bash كل أمر ومعاملاته إلى الخطأ القياسي (أي إلى الطرفية عادةً) قبل تنفيذه مباشرةً.
- يتضمن هذا الإخراج حالة المتغيرات بعد التوسيع، مما يمنحكم رؤية واضحة لما يستعد Bash لتنفيذه.
- إنها أشبه بمشاهدة تنفيذ برنامجكم النصي بالحركة البطيئة!
رؤية `set -x` أثناء العمل
لنرَ set -x أثناء العمل. لاحظوا كيف تطبع الصدفة كل أمر بعد توسيع المتغيرات، مسبوقًا بعلامة +.
جرّبوا تشغيل المثال التالي:
#!/bin/bash
# Enable command tracing
set -x
NAME="Coddy"
MESSAGE="Hello, $NAME!"
echo $MESSAGE
# This command will intentionally fail
ls -l /nonexistent_directory
# Disable command tracing
set +x
echo "Tracing is now off."فهم مخرجات التتبّع
عند تفعيل set -x، سترون أسطرًا تبدأ بالرمز +. وهذا يشير إلى مخرجات التتبّع.
- يتبع
+الأمر الذي يستعد Bash لتنفيذه، إلى جانب معاملاته بعد إجراء أي استبدال للمتغيرات أو الأوامر. - يفيد ذلك للغاية في رؤية القيم الدقيقة للمتغيرات والأمر المحدد الذي يجري تشغيله.
- ويساعد في تحديد مشكلات مثل المسارات غير الصحيحة، أو المتغيرات الفارغة، أو بنى الأوامر غير المقصودة.
التحكم في نطاق `set -x`
لا تحتاجون دائمًا إلى تتبّع البرنامج النصي بأكمله. يمكنكم تفعيل set -x لأقسام محددة:
- استخدموا
set -xلتفعيل التتبّع. - استخدموا
set +xلإيقاف التتبّع.
يتيح لكم ذلك تركيز جهود تصحيح الأخطاء على الأجزاء التي تسبب المشكلات في برنامجكم النصي، من دون أن تغمركم مخرجات الأقسام المستقرة.
التعامل مع الأحداث باستخدام `trap`
يتيح لكم الأمر trap التقاط الإشارات والأحداث الأخرى، ثم تنفيذ أمر عند وقوعها. ويفيد ذلك في:
- التنظيف: ضمان إزالة الملفات المؤقتة.
- معالجة الأخطاء: الاستجابة للأوامر الفاشلة.
- الخروج السلس: التعامل مع مقاطعات المستخدم مثل Ctrl+C.
الصيغة الأساسية هي trap 'command_to_execute' SIGNAL_OR_EVENT.
التنظيف باستخدام `trap EXIT`
تُعدّ الإشارة الوهمية EXIT حالة خاصة. سيُنفَّذ الأمر المحاصر باستخدام EXIT قبل انتهاء برنامجكم النصي مباشرةً، بصرف النظر عن طريقة خروجه (بنجاح أو بفشل أو بسبب مقاطعة).
وهذا مثالي لمهام التنظيف، مثل حذف الملفات المؤقتة. جرّبوا تشغيل البرنامج النصي التالي:
#!/bin/bash
TEMP_FILE="/tmp/coddy_temp_$(date +%s).txt"
# Trap the EXIT signal to remove the temp file
trap 'echo "Cleaning up: Removing $TEMP_FILE"; rm -f "$TEMP_FILE"' EXIT
echo "Script started. Creating temporary file..."
touch "$TEMP_FILE"
echo "Temporary file created: $TEMP_FILE"
# Simulate some work
sleep 2
echo "Script logic completed. Exiting..."التقاط الأخطاء باستخدام `trap ERR`
تُفعَّل الإشارة الوهمية ERR عندما ينتهي أمر بحالة غير صفرية (أي يفشل). ويتيح لكم ذلك تنفيذ إجراءات مخصصة عند وقوع خطأ.
ملاحظة: لا تعمل trap ERR إلا إذا لم يكن الأمر جزءًا من شرط if أو while أو until، أو إذا لم تُفحص قيمته المعادة صراحةً (مثل command || true).
#!/bin/bash
# Trap ERR to report the error line number
trap 'echo "Error detected on line $LINENO! Exiting."' ERR
echo "Starting script with an intentional error..."
# This command will fail and trigger the ERR trap
ls /this/path/does/not/exist
echo "This line will NOT be reached if an error occurs."الاستجابة للإشارات (INT وTERM)
يمكن لـ trap أيضًا التقاط إشارات Linux القياسية. ومن الإشارات الشائعة:
INT(مقاطعة): تُرسل عند الضغط علىCtrl+C.TERM(إنهاء): طلب لإنهاء عملية بطريقة سلسة.
يتيح التقاط هذه الإشارات لبرنامجكم النصي تنفيذ عمليات التنظيف أو حفظ الحالة قبل إيقاف التشغيل، بدلًا من الخروج المفاجئ.
#!/bin/bash
# Trap INT (Ctrl+C) to exit gracefully
trap 'echo "\nCaught Ctrl+C! Exiting gracefully..."; exit 1' INT
echo "Running a continuous task. Press Ctrl+C to stop."
while true; do
echo "Working... $(date)"
sleep 3
doneاختبار تصحيح الأخطاء
لنتحقق من فهمكم لتقنيات تصحيح أخطاء Bash.
مراجعة: تصحيح أخطاء برامجكم النصية
أحسنتم! لقد تعلمتم أدوات أساسية لتصحيح أخطاء برامج Bash النصية:
set -x: تفعّل تتبّع الأوامر، وتعرض لكم ما ينفذه Bash بدقة. استخدمواset +xلإيقافها.trap: تتيح لكم تنفيذ أوامر استجابةً لأحداث أو إشارات محددة.- `trap EXIT`: تضمن تنفيذ مهام التنظيف قبل انتهاء البرنامج النصي.
- `trap ERR`: تلتقط الأوامر التي تنتهي بحالة غير صفرية.
- `trap INT`/`TERM`: تتعامل بسلاسة مع مقاطعات المستخدم أو طلبات الإنهاء.
سيؤدي إتقان هذه التقنيات إلى تحسين قدرتكم بدرجة كبيرة على استكشاف مشكلات برامج Bash النصية وإنشاء برامج متينة!
الأسئلة الشائعة
هل درس «تصحيح أخطاء Bash Scripts (set -x، trap)» مجاني؟
نعم — نص درس «تصحيح أخطاء Bash Scripts (set -x، trap)» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة DevOps Bootcamp، انتقل إلى CoddyKit PRO. تتضمن دورة DevOps Bootcamp 4 دروس في المجموع.
ماذا ستتعلم في «تصحيح أخطاء Bash Scripts (set -x، trap)»؟
اكتشفوا أساليب تصحيح أخطاء Bash scripts، بما في ذلك تتبّع التنفيذ واستخدام 'trap' لمعالجة الأخطاء. تتمرن على DevOps Bootcamp مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ DevOps Bootcamp؟
لا تُشترط خبرة سابقة. DevOps Bootcamp على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.
كم من الوقت يستغرق درس «تصحيح أخطاء Bash Scripts (set -x، trap)»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس DevOps Bootcamp هذا؟
نعم. كل درس في DevOps Bootcamp يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- تصحيح أخطاء Bash Scripts (set -x، trap)
- معالجة الأخطاء وحالة الخروج
- أفضل ممارسات كتابة Scripts والفحص البرمجي
- اختبار نصوص Bash باستخدام Bats