AzLearn

الإدخال التفاعلي

Interactive Read

مفهوم ~15 دقيقة

الإدخال التفاعلي — Interactive Read

الأمر read يقرأ سطراً من المستخدم ويضعه في متغير. هذا مفيد في سكربتات صغيرة تسأل عن اسم أو تأكيد. لكنه ليس الخيار الأفضل لكل شيء. في الأتمتة والتشغيل المتكرر، المعاملات والخيارات غالباً أفضل لأنها قابلة للتوثيق والتكرار داخل CI أو cron.

عند استخدام read، اكتب prompt واضحاً. استخدم read -r حتى لا يفسر backslash. وللقيم الحساسة مثل كلمة مرور، يمكن استخدام read -rs لإخفاء الإدخال، لكن لا تحفظ الأسرار في متغيرات أطول من اللازم ولا تطبعها.

لا تعتمد على الإدخال التفاعلي في سكربت نشر إنتاجي بدون سبب. السكربتات التي تحتاج موافقة يجب أن تجعل السؤال صريحاً جداً، مثل: “اكتب DEPLOY للتأكيد”. الإجابة بنعم/لا قد تكون سهلة الخطأ.

مثال آمن للتعلم

script.sh

في بيئة تفاعلية حقيقية يمكن استبدال القيمة الافتراضية بـread -r -p "اسمك: " name. داخل الدرس نستخدم معاملًا حتى يبقى المثال قابلاً للتشغيل بدون انتظار إدخال.

النمط التفاعلي الكامل — Full Interactive Pattern

ملاحظة: مرحبات AzLearn تعمل في وضع قراءة فقط — الكود يُشغَّل لكن read لا يتوقف لانتظار إدخال. النمط أدناه هو الشكل الكانوني لاستخدام read في سكربت تفاعلي حقيقي على جهازك.

script.sh

خيارات read الأساسية التي تحتاجها:

  • -r — لا تفسر backslash كحرف هروب. دائماً استخدمها ما لم يكن لديك سبب وجيه.
  • -s — وضع صامت: لا تعكس الإدخال على الشاشة. مناسب لكلمات المرور وأي قيمة حساسة.
  • -p "النص" — اطبع prompt مباشرةً قبل انتظار الإدخال، بدون سطر جديد.
  • -t ثانية — مهلة زمنية؛ إذا لم يُدخل المستخدم شيئاً خلالها يُعيد read كود خطأ.
  • -n عدد — اقرأ عدداً محدداً من الحروف بالضبط دون الحاجة إلى Enter؛ مفيد لأوامر تأكيد أحادية الحرف.
  • -d محدد — استخدم محدداً بديلاً عن السطر الجديد لإنهاء الإدخال.

تحقق من الفراغ

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

تحدي — Challenge