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