Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Bash प्रोग्रामिंग

लिनक्स में नेस्टेड वेरिएबल सब्स्टीट्यूशन और बिल्ट-इन BASH वेरिएबल्स में महारत - अंतिम गाइड

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

लिनक्स में नेस्टेड वेरिएबल सब्स्टीट्यूशन और बिल्ट-इन BASH वेरिएबल्स में महारत - अंतिम गाइड

यह लिनक्स वेरिएबल्स पर अंतिम लेख है जहां हम इस विषय को समाप्त करने से पहले वेरिएबल सब्स्टीट्यूशन और शेल में परिभाषित वेरिएबल्स को देखने जा रहे हैं।

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

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

एक वेरिएबल घोषित करें जो रीड-ओनली और एक्जीक्यूटेबल हो।

admin@wsxdn.com:~$ declare -rx Linux_best_website="www.tecmint.com"

संग्रहीत वेरिएबल के मान की जांच करें।

admin@wsxdn.com:~$ printf "%s" "$Linux_best_website" www.tecmint.com

अब एक और वेरिएबल घोषित करें जो फिर से रीड-ओनली और एक्जीक्यूटेबल हो।

admin@wsxdn.com:~$ declare -rx Linux_website="Linux_best_website"

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

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

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

admin@wsxdn.com:~$ printf "%s" "$Linux_website"

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

admin@wsxdn.com:~$ printf "%s" "$Linux_website" www.tecmint.com

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

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

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

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

admin@wsxdn.com:~/Desktop$ declare x=10

हमने अभी-अभी परिभाषित वेरिएबल x के मान की जांच करें।

admin@wsxdn.com:~/Desktop$ echo $yx x10

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

admin@wsxdn.com:~/Desktop$ declare y=x

हमने अभी-अभी परिभाषित वेरिएबल y के मान की जांच करें।

admin@wsxdn.com:~/Desktop$ echo $y x

यहां BASH के वन-टाइम वेरिएबल सब्स्टीट्यूशन की समस्या है, जो वेरिएबल सब्स्टीट्यूशन का एक अतिरिक्त राउंड नहीं करता है। हम इसे ठीक करने के लिए 'eval' कमांड का उपयोग कर रहे हैं।

admin@wsxdn.com:~/Desktop$ eval y=$x

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

admin@wsxdn.com:~/Desktop$ echo $y 10

हुर्रे! समस्या ठीक हो गई और 'eval' कमांड ने बाजी मार ली :)

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

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

क्र.सं. BASH वेरिएबल परिणाम
1 auto_resume रुके हुए जॉब्स के लिए प्रोसेस कमांड पूरा करना।
2 BASH शेल का PATH।
3 BASH_ENV प्रोफाइल फाइल का नाम दिखाता है।
4 BASH_VERSION Bash का संस्करण दिखाता है।
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 HOME आपके होम डायरेक्टरी का नाम।
20 LINES स्टैंडर्ड आउटपुट पर क्षैतिज लाइनों की संख्या।
21 MAIL आने वाले मेल की जांच के लिए फाइल का नाम।
22 OSTYPE ऑपरेटिंग सिस्टम का नाम।
23 OLDPWD पिछली वर्किंग डायरेक्टरी।
24 PWD वर्तमान वर्किंग डायरेक्टरी।
25 RANDOM एक यादृच्छिक संख्या प्रिंट करता है।
26 SHELL उपयोग करने के लिए पसंदीदा शेल।
27 TIMEFORMAT time कमांड का प्रारूप।
28 UID वर्तमान उपयोगकर्ता की आईडी।

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

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

  1. शेल स्क्रिप्टिंग में लिनक्स वेरिएबल्स में महारत - भाग 10: विशेषज्ञ अंतर्दृष्टि शेल स्क्रिप्टिंग में लिनक्स वेरिएबल्स में महारत - भाग 10: विशेषज्ञ अंतर्दृष्टि

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

  1. लिनक्स शेल स्क्रिप्टिंग: वेरिएबल्स पर गहन नज़र – भाग 9 लिनक्स शेल स्क्रिप्टिंग: वेरिएबल्स पर गहन नज़र – भाग 9

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

  1. Bash वेरिएबल्स में मास्टर करें: ग्लोबल और लोकल उपयोग के 6 व्यावहारिक उदाहरण Bash वेरिएबल्स में मास्टर करें: ग्लोबल और लोकल उपयोग के 6 व्यावहारिक उदाहरण

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