Kodokon kodokon.com

سكربتات سطر الأوامر: المُعطيات والبيئة ورموز الخروج

تكتب سكربتات تتلقّى مُعطيات باستخدام process.argv، وتقرأ متغيرات البيئة، وتُرجِع رمز خروج.

8 دقيقة · 3 أسئلة

افتح هذا الدرس في Kodokon

أنت تستخدم بالفعل برامج سطر الأوامر: node وnpm وgit وما إلى ذلك. يقبل كل منها مُعطيات (arguments)، وهي الكلمات المكتوبة بعد اسمه، والتي تغيّر سلوكه. لنكتب برنامجنا الخاص. تكشف Node الكائن العام process، الذي يصف البرنامج قيد التشغيل حاليًا - وقد صادفته مع process.version. إن خاصيته process.argv مصفوفة تحتوي على: المسار إلى Node عند الفهرس 0؛ والمسار إلى سكربتك عند الفهرس 1؛ والمُعطيات التي كتبها المستخدم فعليًا بدءًا من الفهرس 2.

JAVASCRIPT
console.log(process.argv);

const args = process.argv.slice(2);
console.log("Your arguments:", args);
احفظ هذا الكود في args.js ثم نفّذ node args.js apple pear: تعزل slice(2) المُعطيات المفيدة.

مصدر ثانٍ للمعلومات: متغيرات البيئة. وهي أزواج اسم/قيمة يوفّرها النظام للبرنامج عند إطلاقه. تُستخدم للإعداد: مفتاح API سري، أو وضع تصحيح الأخطاء، أو عنوان قاعدة بيانات، وما إلى ذلك. تقرأها في الكائن process.env. إن المتغير المفقود هو undefined: خطّط دائمًا لقيمة افتراضية، باستخدام المُعامِل ?? مثلًا.

JAVASCRIPT
const level = process.env.LOG_LEVEL ?? "info";

console.log("Log level:", level);
احفظ هذا الكود في config.js: مع عدم تعريف أي متغير، يكون المستوى info.
BASH
LOG_LEVEL=debug node config.js
على macOS وLinux، تعرّف متغيرًا مباشرة قبل الأمر: يطبع السكربت عندئذٍ debug.

عندما ينتهي برنامج ما، فإنه يُرجِع رمز خروج إلى النظام: وهو رقم يلخّص كيف سارت الأمور. اصطلاح عالمي: يعني 0 "النجاح"، وتشير أي قيمة أخرى إلى خطأ - وهذا ما تتحقق منه الأدوات والسكربتات الأخرى لمعرفة ما إذا كان كل شيء قد نجح. توقف process.exit(1) السكربت فورًا برمز 1. استخدم أيضًا console.error لرسائل الخطأ: فهي تكتب في مخرَج الخطأ (stderr)، وهو قناة منفصلة عن المخرَج العادي. لنجمع كل هذا في سكربت كامل.

JAVASCRIPT
const name = process.argv[2];

if (!name) {
  console.error("Usage: node greet.js <name>");
  process.exit(1);
}

console.log(`Hello, ${name}!`);
مع عدم وجود أي مُعطى، يشرح greet.js طريقة استخدامه ويخرج برمز 1؛ ومع اسم، يُلقي التحية وينتهي برمز 0.

اختبار المعرفة

تأكّد من أنك تذكّرت النقاط الأساسية في هذا الدرس.

  1. في process.argv، أين يوجد أول مُعطى كتبه المستخدم؟
    • عند الفهرس 0
    • عند الفهرس 2
    • عند الفهرس 1
    • دائمًا عند الفهرس الأخير
  2. أيّ رمز خروج يشير إلى أن البرنامج انتهى بنجاح؟
    • 0
    • 1
    • 200
  3. كيف تقرأ متغير البيئة API_KEY في سكربت Node؟
    • process.argv.API_KEY
    • env.get("API_KEY")
    • process.env.API_KEY