حالة الخروج
Exit Status
حالة الخروج — Exit Status
في Bash، كل أمر ينتهي برقم يسمى exit status. الرقم 0 يعني أن الأمر نجح. أي رقم آخر يعني فشلاً أو حالة غير طبيعية. هذه القاعدة تبدو معكوسة قليلاً لمن جاء من لغات برمجة حيث true غالباً تساوي 1، لكنها قاعدة Unix القديمة: الصفر يعني “لا يوجد خطأ”.
يمكنك قراءة الحالة الأخيرة بالمتغير الخاص $?. لكن في السكربتات النظيفة غالباً لا تحتاج قراءته مباشرة. تكتب الأمر داخل if وتترك Bash تفحص status. مثال: if grep -q "error" app.log; then ... fi. هنا grep يرجع 0 إذا وجد النص، ويرجع غير ذلك إذا لم يجده.
فهم exit status مهم لأن Bash لا تعتمد على النص المطبوع لمعرفة النجاح. أمر قد يطبع تحذيراً لكنه ينجح، وأمر قد لا يطبع شيئاً لكنه يفشل. لذلك لا تبنِ منطقك على شكل المخرجات إلا إذا كان الأمر مصمماً لذلك.
مثال عملي
الرمز <<< "$message" يسمى here-string. يمرر النص كمدخل للأمر. هذا مفيد للتجارب الصغيرة، لكنه لا يعني أن كل نص يجب أن يمر عبر grep. أحياناً شرط Bash مثل [[ "$message" == *automation* ]] يكون أوضح وأسرع.
نجاح وفشل مقصود
استخدم exit 1 عندما تريد إنهاء السكربت بسبب خطأ. استخدم exit 0 للنجاح الصريح، وغالباً لا تحتاج كتابته في نهاية السكربت لأن آخر أمر ناجح يكفي. المهم أن تكون رسائل الخطأ على stderr باستخدام >&2 عندما تخبر المستخدم عن خطأ.