Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> बाश प्रोग्रामिंग

नेस्टेड चर प्रतिस्थापन और Linux में पूर्वनिर्धारित BASH चर - भाग 11

बाश शैल पर पिछले दो लेख, जहां हमने विस्तार से चर पर चर्चा की, हमारे पाठकों के बीच अत्यधिक सराहना की गई। हम टेकमिंट-टीम . के रूप में आपको विवरण में शामिल नवीनतम, अप-टू-डेट और प्रासंगिक विषय प्रदान करने के लिए बहुत उत्सुक हैं। इसके अलावा हम हमेशा संबंधित विषयों के प्रमुख दृष्टिकोणों को छूने की कोशिश करते हैं।

नेस्टेड चर प्रतिस्थापन और Linux में पूर्वनिर्धारित BASH चर - भाग 11

यहाँ Linux चर पर अंतिम लेख है जहाँ हम इस विषय को बंद करने से पहले शेल में परिभाषित चर प्रतिस्थापन और चर देखने जा रहे हैं।

कमांड वास्तव में निष्पादित होने से पहले बैश परिवर्तनीय प्रतिस्थापन करता है। लिनक्स बैश शेल कमांड को निष्पादित करने से पहले सभी '$' चिन्ह की खोज करता है और इसे वेरिएबल के मान से बदल देता है। बैश वैरिएबल प्रतिस्थापन की प्रक्रिया केवल एक बार की जाती है। क्या होगा यदि हमारे पास नेस्टेड चर हैं?

नोट :नेस्टेड वेरिएबल से हमारा मतलब वेरिएबल के अंदर घोषित वेरिएबल से है। आइए नीचे दिए गए उदाहरण में उपरोक्त परिदृश्य को देखें।

एक वैरिएबल घोषित करें जो नीचे के रूप में केवल-पढ़ने योग्य और निष्पादन योग्य है।

[email protected]:~$ declare -rx Linux_best_website="www.tecmint.com"

संग्रहीत चर के मान की जाँच करें।

[email protected]:~$ printf "%s" "$Linux_best_website" 

www.tecmint.com

अब एक और वेरिएबल घोषित करें जो फिर से केवल-पढ़ने योग्य और निष्पादन योग्य है।

[email protected]:~$ declare -rx Linux_website="Linux_best_website"

अब स्थिति यह है कि हमने दो चर परिभाषित किए हैं।

'Linux_best_website', जिसका मान "www.tecmint.com"
और, 'Linux_website' है, जिसका मान "Linux_best_website"

है

यदि हम नीचे एक-पंक्ति कमांड चलाते हैं, तो परिणाम क्या होगा?

[email protected]:~$ printf "%s" "$Linux_website"

इसे पहले वेरिएबल '$Linux_website . को बदलना चाहिए ', मान के साथ “Linux_best_website ” और फिर “$Linux_best_website " फिर से एक चर है जिसका मान "www.tecmint.com . है " तो नीचे दिए गए कमांड को चलाने का अंतिम आउटपुट होना चाहिए।

[email protected]:~$ printf "%s" "$Linux_website" 

www.tecmint.com

लेकिन दुर्भाग्य से, यह स्थिति नहीं है, हमें जो आउटपुट मिल रहा है वह है Linux_best_website

कारण? हां! बैश केवल एक बार चर के मान को प्रतिस्थापित करता है। उन जटिल लिपियों और कार्यक्रमों के बारे में क्या जहां हमें चर को बार-बार बदलने की आवश्यकता होती है और साथ ही चर को एक से अधिक बार बदलने की आवश्यकता होती है?

यहाँ कमांड आता है 'eval जो एक स्क्रिप्ट में एक से अधिक बार परिवर्तनशील प्रतिस्थापन का अतिरिक्त कार्य करता है। यहां एक उदाहरण दिया गया है जिससे पूरी कार्यप्रणाली कांच की तरह स्पष्ट हो जाती है।

एक चर घोषित करें x , जिसका मान 10 . है ।

[email protected]:~/Desktop$ declare x=10

चर x का मान जांचें , हमने अभी-अभी परिभाषित किया है।

[email protected]:~/Desktop$ echo $yx

x10

एक चर घोषित करें y , जिसका मान x . है ।

[email protected]:~/Desktop$ declare y=x

चर का मान जांचें y , हमने अभी-अभी परिभाषित किया है।

[email protected]:~/Desktop$ echo $y 

x

यहाँ बाश की समस्या है एक बार का परिवर्तनीय प्रतिस्थापन, जो चर प्रतिस्थापन का एक अतिरिक्त दौर नहीं करता है। हम 'eval . का इस्तेमाल कर रहे हैं इसे ठीक करने का आदेश दें।

[email protected]:~/Desktop$ eval y=$x

अब वेरिएबल 'y . का मान चेक करें '।

[email protected]:~/Desktop$ echo $y 

10

हुर्रे! समस्या का समाधान कर दिया गया और 'eval ' कमांड ने रेस जीती :)

उल्लेख नहीं करने के लिए, 'eval ' कमांड बड़े स्क्रिप्ट प्रोग्राम में बहुत मददगार है और एक बहुत ही उपयोगी टूल है।

इस पोस्ट का अंतिम लेकिन कम से कम हिस्सा BASH पूर्वनिर्धारित चर नहीं है। नहीं! इस लिस्ट को देखकर घबराएं नहीं। कुछ को छोड़कर स्क्रिप्ट लिखना शुरू करने से पहले आपको पूरी सूची याद रखने की आवश्यकता नहीं है। सीखने की प्रक्रिया के एक भाग के रूप में, हम BASH पूर्वनिर्धारित चर सूची प्रस्तुत कर रहे हैं।

नहीं. बैश वेरिएबल परिणाम
1 auto_resume रुके हुए कार्यों के लिए प्रक्रिया आदेश पूरा करना।
2 BASH खोल का पथ।
3 BASH_ENV प्रोफाइल फ़ाइल का नाम दिखाता है
4 BASH_VERSION बैश का संस्करण दिखाता है
5 BASH_VERSINFO विस्तृत संस्करण जानकारी दिखाता है।
6 BASH_VERSINFO[0] प्रमुख संस्करण संख्या (रिलीज़)।
7 BASH_VERSINFO[1] लघु संस्करण संख्या (संस्करण)।
8 BASH_VERSINFO[2] पैच स्तर।
9 BASH_VERSINFO[3] निर्माण संस्करण।
10 BASH_VERSINFO[4] रिलीज़ स्थिति (उदाहरण के लिए, beta1 )।
11 BASH_VERSINFO[5] MACHTYPE का मान।
12 CDPATH कोलन द्वारा अलग की गई निर्देशिकाओं की सूची।
13 COLUMNS मानक आउटपुट पर प्रति पंक्ति वर्णों की संख्या।
14 EUID वर्तमान उपयोगकर्ता की उपयोगकर्ता आईडी।
15 FCEDIT fc कमांड के लिए डिफ़ॉल्ट टेक्स्ट एडिटर।
16 FUNCNAME मज़ा का नाम
17 GROUPS समूह जिनमें से उपयोगकर्ता एक सदस्य है।
18 HISTFILE कमांड हिस्ट्री वाली फाइल।
19 होम आपके होम डायरेक्टरी का नाम।
20 LINES मानक आउटपुट पर क्षैतिज रेखाओं की संख्या।
21 मेल इनकमिंग मेल की जांच के लिए फाइल का नाम
22 OSTYPE ऑपरेटिंग सिस्टम का नाम।
23 OLDPWD पिछली कार्यशील निर्देशिका
24 पीडब्ल्यूडी वर्तमान कार्यशील निर्देशिका
25 रैंडम एक यादृच्छिक संख्या प्रिंट करता है
26 SHELL उपयोग करने के लिए पसंदीदा शेल
27 TIMEFORMAT टाइम कमांड का फॉर्मेट।
28 UID वर्तमान उपयोगकर्ता की आईडी

पूर्वनिर्धारित बाश चर की एक विशाल सूची है। हमने सबसे अधिक उपयोग की जाने वाली सूची तैयार करने का प्रयास किया है।

अभी के लिए इतना ही। मैं एक और दिलचस्प लेख के साथ यहां फिर से रहूंगा। तब तक जुड़े रहें और TecMint . से जुड़े रहें . नीचे टिप्पणी अनुभाग में हमें अपनी बहुमूल्य प्रतिक्रिया देना न भूलें।


  1. शेल स्क्रिप्टिंग में 'लिनक्स वेरिएबल्स' को समझना और लिखना - भाग 10

    लिनक्स शेल स्क्रिप्टिंग भाषा हमेशा एक गर्म विषय रहा है और हमेशा भविष्य में रहेगा। शेल स्क्रिप्टिंग भाषा जादुई है और किसी भी अन्य भाषा की तरह स्क्रिप्टिंग भाषा में प्रोग्राम करना इतना आसान है। हालांकि, हम क्या कर रहे हैं और परिणाम क्या अपेक्षित है, इसकी गहन जानकारी की आवश्यकता है। सभी शेल स्क्रिप्ट

  1. शेल स्क्रिप्टिंग भाषा में लिनक्स "चर" की एक अंतर्दृष्टि - भाग 9

    हम पहले ही Linux Shell Scripting . पर लेखों की एक श्रृंखला लिख ​​चुके हैं जिसका उस समय गर्मजोशी से स्वागत किया गया था और यह अब भी काफी प्रासंगिक था। शेल स्क्रिप्टिंग पर लेखों के संग्रह का लिंक यहां दिया गया है। लिनक्स शैल स्क्रिप्टिंग सीखें यहां इस लेख में हम चर . देखेंगे , इसका निष्पादन और शेल स

  1. बैश वैरिएबल ट्यूटोरियल - 6 प्रैक्टिकल बैश ग्लोबल और लोकल वेरिएबल उदाहरण

    यह लेख हमारी चल रही बैश ट्यूटोरियल श्रृंखला का हिस्सा है। किसी भी अन्य प्रोग्रामिंग भाषाओं की तरह, बैश भी चर प्रदान करता है। बैश चर जानकारी के लिए अस्थायी भंडारण प्रदान करते हैं जिसकी कार्यक्रम के जीवनकाल के दौरान आवश्यकता होगी।सिंटैक्स: VARNAME=VALUE नोट: वेरिएबल असाइनमेंट में = साइन के आसपास कोई