लिनक्स शेल स्क्रिप्टिंग भाषा हमेशा एक गर्म विषय रहा है और हमेशा भविष्य में रहेगा। शेल स्क्रिप्टिंग भाषा जादुई है और किसी भी अन्य भाषा की तरह स्क्रिप्टिंग भाषा में प्रोग्राम करना इतना आसान है। हालांकि, हम क्या कर रहे हैं और परिणाम क्या अपेक्षित है, इसकी गहन जानकारी की आवश्यकता है।
सभी शेल स्क्रिप्टिंग लेख जो हमने अपने पाठकों के लिए लिखे हैं, उनकी अत्यधिक सराहना की जाती है, जिसमें पिछले एक "एन इनसाइट ऑफ़ लिनक्स वेरिएबल्स" भी शामिल है। हम पिछले लेख को एक नए स्तर तक बढ़ा रहे हैं।
परिवर्तनीय विशेषताएं
Linux वातावरण में प्रत्येक चर के कुछ विकल्प होते हैं, और उन्हें 'विशेषताएँ' कहा जाता है। इन विकल्पों या विशेषताओं को चालू चालू किया जा सकता है और बंद , जब आवश्यक हो स्थिति के अनुसार "घोषणा" कमांड का उपयोग करके।
चर विशेषता का एक उदाहरण '-i . स्विच का उपयोग कर रहा है ' जो संबंधित चर के लिए पूर्णांक विशेषता को चालू कर देगा। भले ही '-i . स्विच करने के लिए एक गैर-संख्यात्मक मान पास किया गया हो ' यह एक त्रुटि संदेश नहीं देगा और आउटपुट '0 'पूर्णांक व्याख्या के रूप में। यहाँ यह नीचे दिए गए उदाहरण से और स्पष्ट हो जाता है।
एक चर पूर्णांक घोषित करें, बिल =121
[email protected]:~$ declare -i bill=121
परिवर्तनीय बिल का मूल्य प्रिंट करें।
[email protected]:~$ printf "%d\n" "$bill" 121
चर मान को एक स्ट्रिंग होने दें। परिवर्तनीय बिल पहले ही घोषित हो चुका है, इसे दूसरी बार घोषित करने की कोई आवश्यकता नहीं है। बस वैरिएबल के मान को इस रूप में बदलें।
[email protected]:~$ bill=tecmint
अब, वेरिएबल बिल के मूल्य को फिर से प्रिंट करें।
[email protected]:~$ printf "%d\n" "$bill" 0
सूचना '0 'त्रुटि संदेश के स्थान पर।
अब सवाल यह है कि पहले से घोषित चरों की विशेषताओं को कैसे जानें?
[email protected]:~$ declare -p bill declare -i bill="121"
यहाँ, एक -p (प्रिंट के लिए खड़ा है) स्विच बचाव के लिए आता है।
फिर से, एक चर की विशेषताओं को बंद करने के लिए मुझे क्या करना चाहिए?
स्विच करने के लिए बंद एक चर के गुण जो हमें चाहिए वह एक + . डालना है (प्लस ) स्विच से ठीक पहले हस्ताक्षर करें। यहाँ यह नीचे दिए गए उदाहरण से अधिक स्पष्ट है।
स्विच बंद उपरोक्त चर के लिए पूर्णांक विशेषता।
[email protected]:~$ declare +i bill
चर के मान की जाँच करें।
[email protected]:~$ printf "%d\n" "$bill" bash: printf: bill: invalid number 0
अब स्विच स्ट्रिंग का उपयोग करके वेरिएबल का मान प्रिंट करें।
[email protected]:~$ printf "%s\n" "$bill" tecmint
यहाँ ऊपर के उदाहरण में, बैश गैर-संख्यात्मक मान को त्रुटि के रूप में नहीं आंक सकता, हालाँकि printf व्याख्या कर रहा है, एक संख्या क्या हो सकती है और क्या नहीं।
केवल पढ़ने के लिए चर
आपने रीड ओनली मेमोरी (ROM .) सुनी होगी ), लेकिन केवल-पढ़ने योग्य चर क्या है? क्या इसकी ROM से कोई समानता है?
वेल-रीड-ओनली वेरिएबल्स जैसे रीड-ओनली मेमोरी कुछ ऐसा है जिसका मान एक बार असाइन किए जाने के बाद बदला नहीं जा सकता है। इसलिए इसे केवल-पढ़ने के लिए कहा जाता है। आप उस वेरिएबल के लिए कोई नया मान लिख, संपादित या संशोधित नहीं कर सकते। यहाँ उदाहरण का उपयोग करते हुए एक उदाहरण दिया गया है।
केवल पढ़ने के लिए डिकैल करें (-r ) चर नाम, जिसका मान “Tecmint.com” है।
[email protected]:~$ declare -r name="Tecmint.com"
ऊपर घोषित चर का मान प्रिंट करें।
[email protected]:~$ printf "%s\n" "$name" Tecmint.com
चर के मान को बदलने का प्रयास करें।
[email protected]:~$ declare -r name="Avishek" bash: declare: name: readonly variable
जैसा कि ऊपर चर्चा की गई है, '+ . का उपयोग करके केवल-पढ़ने योग्य चर की विशेषताओं को बदला जा सकता है 'चिह्न।
Linux में चर निर्यात करना
शेल स्क्रिप्ट में घोषित सभी शेल चर स्क्रिप्ट चलने तक उपलब्ध हैं। स्क्रिप्ट के बाहर स्क्रिप्ट से वैरिएबल मौजूद नहीं है। स्क्रिप्ट के बाहर चर उपलब्ध कराने की प्रक्रिया को निर्यात चर कहा जाता है।
स्विच घोषणा -x . का उपयोग करके एक चर को शेल के बाहर निर्यात किया जा सकता है (निर्यात), जो उस शेल को स्वीकार करता है जिसे आप निर्यात करना चाहते थे। ए डिक्लेयर एक्सपोर्ट स्विच का उपयोग इस रूप में किया जा सकता है।
[email protected]:~$ declare -x variable=”Constant_Value”
स्क्रिप्ट के चलने के दौरान वेरिएबल में किए गए सभी परिवर्तन खो जाते हैं, जब वेरिएबल को स्क्रिप्ट के बाहर निर्यात किया जाता है। शेल स्क्रिप्टिंग में निर्यात चर बहुत महत्वपूर्ण है।
हम एक वेरिएबल चाहते हैं जो केवल पढ़ने के लिए हो और स्क्रिप्ट के बाहर उपलब्ध हो, हमें स्विच -r का उपयोग करने की आवश्यकता है और स्विच करें -x उसी समय।
[email protected]:~$ declare -rx variable=”Constant_Value”
पर्यावरण चर
वेरिएबल्स जो प्रोग्राम और प्रोग्राम के बीच साझा किए जाते हैं जो उन्हें निष्पादित करते हैं। पर्यावरण चर निर्यात किए जा सकते हैं लेकिन विशेषताएँ इसे असाइन नहीं की जा सकतीं।
उपरोक्त सिद्धांत को व्यावहारिक रूप से समझना। यहां हमारे पास दो स्क्रिप्ट हैं 0.sh और 1.sh ।
# 0.sh #!/bin/bash declare -rx name=Tecmint bash 0.sh exit 0
और दूसरी लिपि है।
# 1.sh #!/bin/bash printf "%s\n" "$name" name=Tecmint.com printf "%s\n" "$name" exit 0
यहाँ क्या हो रहा है, एक चर (नाम) को केवल पढ़ने और निर्यात के रूप में घोषित किया जाता है और उसके तुरंत बाद दूसरी स्क्रिप्ट को कॉल किया जाता है।
दूसरी स्क्रिप्ट ने वेरिएबल को पहली स्क्रिप्ट से प्रिंट किया था जिसे पहले printf . में निर्यात किया गया था बयान। दूसरे प्रिंटफ स्टेटमेंट में यह वेरिएबल 'name . को असाइन किया गया नया मान दिखाता है '।
चिंता करने की कोई आवश्यकता नहीं है, कि चर केवल-पढ़ने के लिए था, इसे पुन:असाइन कैसे किया जा सकता है। क्या आपको याद नहीं है कि "स्क्रिप्ट के चलने के दौरान वेरिएबल में किए गए सभी परिवर्तन खो जाते हैं, जब वेरिएबल को स्क्रिप्ट के बाहर निर्यात किया जाता है।"
संदर्भ
घोषणा कमांड नीचे दिए गए सभी स्विच को उनके संयोजन के साथ अनुमति देता है।
- -a :एक सरणी घोषित करता है।
- -f :प्रदर्शन समारोह और परिभाषा।
- -एफ :प्रदर्शन समारोह का नाम।
- -r :वेरिएबल को केवल-पढ़ने के लिए घोषित करें।
- -x :परिवर्तनीय को निर्यात योग्य घोषित करें।
- -मैं :चर को पूर्णांक के रूप में घोषित करें।
अभी के लिए इतना ही। अगले लेख में हम 'eval . का उपयोग करके चरों को स्थानापन्न करने के तरीकों पर चर्चा करेंगे इस विषय को बंद करने से पहले कमांड और वेरिएबल्स पहले से ही बैश में परिभाषित हैं। आशा है कि आप लोग स्क्रिप्टिंग की अपनी गहन यात्रा का आनंद ले रहे होंगे। तब तक जुड़े रहें और Tecmint.com से जुड़े रहें ।