Kodokon kodokon.com

कमांड-लाइन स्क्रिप्ट्स: आर्गुमेंट, एन्वायरनमेंट और एग्ज़िट कोड

आप ऐसी स्क्रिप्ट्स लिखते हैं जो process.argv से आर्गुमेंट प्राप्त करती हैं, एन्वायरनमेंट वेरिएबल पढ़ती हैं, और एक एग्ज़िट कोड लौटाती हैं।

8 मिनट · 3 प्रश्न

इस पाठ को Kodokon में खोलें

आप पहले से ही कमांड-लाइन प्रोग्राम उपयोग करते हैं: node, npm, git, वगैरह। हर एक आर्गुमेंट स्वीकार करता है, उसके नाम के बाद टाइप किए गए शब्द, जो उसके व्यवहार को बदल देते हैं। आइए अपना खुद का लिखें। Node ग्लोबल ऑब्जेक्ट process प्रकट करता है, जो वर्तमान में चल रहे प्रोग्राम का वर्णन करता है - आप इससे process.version के साथ मिल चुके हैं। इसकी प्रॉपर्टी process.argv एक ऐरे है जिसमें होता है: इंडेक्स 0 पर, Node का पथ; इंडेक्स 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. आप किसी Node स्क्रिप्ट में API_KEY एन्वायरनमेंट वेरिएबल को कैसे पढ़ते हैं?
    • process.argv.API_KEY
    • env.get("API_KEY")
    • process.env.API_KEY