OnWorks Linux و Windows Online WorkStations

الشعار

استضافة مجانية على الإنترنت لمحطات العمل

<السابق | المحتويات | التالي>

البرمجة الدفاعية

من المهم التحقق من الافتراضات عند البرمجة. هذا يعني إجراء تقييم دقيق لحالة خروج البرامج والأوامر التي يستخدمها البرنامج النصي. هنا مثال على قصة حقيقية. كتب مسؤول نظام مؤسف نصًا لتنفيذ مهمة صيانة على خادم مهم. احتوى البرنامج النصي على السطرين التاليين من التعليمات البرمجية:


cd $ dir_name rm *

cd $ dir_name rm *


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

لنلقِ نظرة على بعض الطرق التي يمكن من خلالها تحسين هذا التصميم. أولاً ، قد يكون من الحكمة تنفيذ حكم الإعدام rm يتوقف على نجاح cd:


cd $ dir_name && rm *

cd $ dir_name && rm *


بهذه الطريقة ، إذا كان cd فشل الأمر ، فإن rm لم يتم تنفيذ الأمر. هذا أفضل ، لكنه لا يزال يترك الباب مفتوحًا أمام احتمال أن المتغير ، dir_name، غير مضبوط أو فارغ ، مما قد يؤدي إلى حذف الملفات الموجودة في الدليل الرئيسي للمستخدم. يمكن أيضًا تجنب ذلك عن طريق التحقق من ذلك dir_name يحتوي في الواقع على اسم دار موجود:



[[-d $ dir_name]] && cd $ dir_name && rm *

[[-d $ dir_name]] && cd $ dir_name && rm *


في كثير من الأحيان ، من الأفضل تضمين المنطق لإنهاء البرنامج النصي والإبلاغ عن خطأ عند حدوث حالة مثل الحالة المذكورة أعلاه:



# حذف الملفات في الدليل $ dir_name إذا [[! -d "$ dir_name"]] ؛ من ثم

صدى "لا يوجد دليل من هذا القبيل: '$ dir_name'"> & 2 خروج 1

fi

لو ! cd $ dir_name؛ من ثم

صدى "Cannot cd to '$ dir_name'"> & 2 exit 1

fi

لو ! جمهورية مقدونيا * ؛ من ثم

صدى "فشل حذف الملف. تحقق من النتائج"> & 2 خروج 1

fi

# حذف الملفات في الدليل $ dir_name إذا [[! -d "$ dir_name"]] ؛ من ثم

صدى "لا يوجد دليل من هذا القبيل: '$ dir_name'"> & 2 خروج 1

fi

لو ! cd $ dir_name؛ من ثم

صدى "Cannot cd to '$ dir_name'"> & 2 exit 1

fi

لو ! جمهورية مقدونيا * ؛ من ثم

صدى "فشل حذف الملف. تحقق من النتائج"> & 2 خروج 1

fi


هنا ، نتحقق من الاسم ، لنرى أنه اسم دليل موجود ، ونجاح-

أخطاء منطقية


جئ cd أمر. إذا فشل أي منهما ، يتم إرسال رسالة خطأ وصفية إلى الخطأ القياسي وينتهي البرنامج النصي بحالة خروج واحدة للإشارة إلى الفشل.


أفضل الحوسبة السحابية لنظام التشغيل في OnWorks: