एक स्थितिगत पैरामीटर क्या है?

एक स्थितीय पैरामीटर कमांड लाइन पर निर्दिष्ट एक तर्क है, जिसका उपयोग वर्तमान प्रक्रिया को शेल में लॉन्च करने के लिए किया जाता है। शेल द्वारा बनाए गए चर के एक विशेष सेट में स्थितीय पैरामीटर मान संग्रहीत किए जाते हैं।

चर जो स्थितिगत मापदंडों को संग्रहीत करते हैं

एक शेल का एक विशिष्ट उदाहरण जो स्थितिगत मापदंडों का उपयोग करता है वह है बैश। आप लिनक्स, बीएसडी, मैकओएस एक्स और विंडोज 10 पर बैश का उपयोग कर सकते हैं।

निम्नलिखित बैश कमांड पर विचार करें। कमांड का नाम mycommand है । कमांड लाइन के तीन पैरामीटर हैं: एक, दो और तीन चार

 mycommand एक दो "तीन चार" 

युक्ति: किसी स्थान के द्वारा स्थितीय मापदंडों को सीमांकित किया जाता है। शेल व्यक्तिगत मापदंडों के रूप में रिक्त स्थान के बाद चीजों की व्याख्या करता है। यदि पैरामीटर में स्वयं एक स्थान होता है, तो इसे उद्धरण चिह्नों में संलग्न करें, जैसा कि "तीन चार", ऊपर।

जबकि mycommand चल रहा है, bash इसे निम्नलिखित शेल चरों के साथ प्रदान करता है:

चर का नाममूल्य
$ 0mycommand
$ 1एक
$ 2दो
$ 3तीन चार
$ #3
[ईमेल संरक्षित]एक दो तीन चार
$ *एक दो तीन चार

चर $ 0 कमांड के पहले शब्द पर सेट होता है - कमांड नाम। यह चर उपयोगी है क्योंकि एक प्रतीकात्मक लिंक का उपयोग करके कमांड का नाम बदला जा सकता है, या निष्पादित किया जा सकता है। कुछ प्रोग्राम प्रोग्राम चलाने के लिए उपयोग किए जाने वाले कमांड नाम के आधार पर अलग-अलग व्यवहार करते हैं। $ 0 प्रोग्राम को यह देखने की अनुमति देता है कि कमांड नाम ने उसे क्या लॉन्च किया।

चर $ 1, $ 2, और $ 3 में क्रमशः पहले, दूसरे और तीसरे पैरामीटर के मूल्य शामिल हैं। यदि कोई चौथा पैरामीटर था, तो इसका मूल्य चर 4 डॉलर में रखा जाएगा। 9 से अधिक पैरामीटर को संख्या के चारों ओर घुंघराले ब्रेसिज़ का उपयोग करके पहुँचा जा सकता है; उदाहरण के लिए, $ {10} दसवां पैरामीटर होगा, और $ {123} 123 वां होगा।

चर $ # में स्थितीय मापदंडों की संख्या शामिल है, $ 0 को छोड़कर।

चर [ईमेल संरक्षित] में $ 0 को छोड़कर सभी स्थितीय मापदंडों का मूल्य समाहित है।

चर $ *, [ईमेल संरक्षित] के समान है, सिवाय इसके जब यह दोहरे-उद्धृत किया जाता है। जब दोहरे उद्धरण चिह्नों में संलग्न होते हैं, तो $ * $ 1c $ 2c $ 3c तक फैल जाता है ... जहाँ c $ IFS का पहला वर्ण है, bash का आंतरिक क्षेत्र विभाजक चर। IFS शब्द विभाजन के लिए उपयोग किया जाता है, और इसका डिफ़ॉल्ट मान "स्पेस, टैब या न्यूलाइन" है - यह वह जगह है जहां bash एक शब्द के अंत और अगले की शुरुआत को देखता है।

यदि $ IFS का मान " _ " (एक अंडरस्कोर) है, तो "[ईमेल संरक्षित]" का विस्तार होता है:

 एक दो तीन चार 

जबकि "$ *" का विस्तार है:

 एक दो तीन चार 

उदाहरण

यहाँ bash में स्थितीय मापदंडों का उपयोग करने के कुछ उदाहरण दिए गए हैं।

सेट-इन कमांड का उपयोग करके, [ शेल संरक्षित] का मान वर्तमान शेल के लिए संशोधित किया जा सकता है। सेट के बाद सब कुछ - एक स्थिति पैरामीटर के रूप में पंजीकृत किया जाएगा।

 सेट - एक दो "तीन चार" 

अब हम इन वेरिएबल्स को ...

 [ईमेल संरक्षित] में arg के लिए; गूंज "$ arg"; किया हुआ 
 एक दो तीन चार 

बैश में, [ईमेल प्रोटेक्टेड] डिफॉल्ट लिस्ट टू इटरेट टू रन इट फॉर रन, तो यह कमांड भी काम करता है:

 arg के लिए; गूंज "$ arg"; किया हुआ 
 एक दो तीन चार 

"$ *" (दोहरे उद्धरण चिह्नों के साथ) को बदलना, आईआईएफएस के पहले चरित्र के साथ शामिल होने पर, स्थितिगत मापदंडों का एक संक्षिप्त स्ट्रिंग प्रदान करेगा:

 आईएफएस = ", "; "$ *" में arg के लिए; गूंज "$ arg"; किया हुआ 
 एक दो तीन चार 

अधिक जानकारी के लिए, बैश कमांड शेल का प्रलेखन देखें।

पैरामीटर, प्रोग्रामिंग शब्द