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

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

यह लेख हमारी चल रही bash ट्यूटोरियल सीरीज़ का हिस्सा है। किसी भी अन्य प्रोग्रामिंग भाषा की तरह, Bash भी वेरिएबल्स प्रदान करता है।

Bash वेरिएबल्स प्रोग्राम के जीवनकाल के दौरान आवश्यक जानकारी के लिए अस्थायी भंडारण प्रदान करते हैं।

सिंटैक्स:

VARNAME=VALUE

नोट: वेरिएबल असाइनमेंट में "=" चिन्ह के आसपास कोई स्पेस नहीं होना चाहिए। जब आप VAR=VALUE का उपयोग करते हैं, तो शेल "=" को एक प्रतीक के रूप में देखता है और कमांड को वेरिएबल असाइनमेंट के रूप में मानता है। जब आप VAR = VALUE का उपयोग करते हैं, तो शेल मान लेता है कि VAR एक कमांड का नाम होना चाहिए और इसे निष्पादित करने का प्रयास करता है।

शेल वेरिएबल्स के प्रकार की परवाह नहीं करता। वेरिएबल्स स्ट्रिंग्स, पूर्णांक, या वास्तविक संख्याओं को संग्रहीत कर सकते हैं।

उदाहरण 1. सरल Bash वेरिएबल असाइनमेंट उपयोग

निम्नलिखित स्क्रिप्ट LIST नामक एक वेरिएबल बनाती है और मान "/var/opt/bin" असाइन करती है। वेरिएबल्स को एक्सेस करने के लिए, बस वेरिएबल नाम को $ से उपसर्ग करें, जो आपको उस वेरिएबल में संग्रहीत मान देगा।

$ cat sample.sh #!/bin/bash LIST="/var/opt/bin/" ls -l $LIST

उपरोक्त स्क्रिप्ट को निष्पादित करें, जो नीचे दिखाए अनुसार /var/opt/bin को लंबे प्रारूप में सूचीबद्ध करेगा।

$ ./sample.sh total 8 drwxrwsr-x 2 bin bin 4096 Jan 29 06:43 softwares drwxr-sr-x 5 root bin 4096 Sep 2 2009 llist

Bash वेरिएबल स्कोप - लोकल और ग्लोबल

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

उदाहरण 2. Bash वेरिएबल्स में खाली मान

$ cat var1.sh #!/bin/sh echo "Variable value is: $VAR1" VAR1="GEEKSTUFF" echo "Variable value is: $VAR1" $ ./var1.sh Variable value is: Variable value is: GEEKSTUFF

जैसा कि ऊपर दिखाया गया है, प्रारंभ में वेरिएबल का एक खाली मान होगा, असाइन करने के बाद, आप अपने मान प्राप्त कर सकते हैं। export कमांड का उपयोग इंटरैक्टिव शेल से वेरिएबल्स निर्यात करने के लिए किया जाता है। export वेरिएबल्स के स्कोप पर प्रभाव दिखाता है।

उदाहरण 3. Export के बिना Bash वेरिएबल्स

एक इंटरैक्टिव शेल में एक वेरिएबल को मान के साथ असाइन करें, और अपने शेल स्क्रिप्ट में उसी को एक्सेस करने का प्रयास करें।

$ VAR2=LINUX $ cat var2.sh #!/bin/bash echo "VAR2=$VAR2" VAR2=UNIX echo "VAR2=$VAR2"

अब, उपरोक्त स्क्रिप्ट को नीचे दिखाए अनुसार निष्पादित करें।

$ ./var2.sh VAR2= VAR2=UNIX

फिर भी आपको वेरिएबल VAR2 के लिए खाली मान मिलेगा। शेल वेरिएबल VAR2 को LINUX के साथ केवल वर्तमान शेल में संग्रहीत करता है। var2.sh के निष्पादन के दौरान, यह शेल को स्पॉन करता है और स्क्रिप्ट को निष्पादित करता है। इसलिए स्पॉन किए गए शेल में वेरिएबल VAR2 का मान नहीं होगा। आपको किसी अन्य प्रोग्राम द्वारा विरासत में प्राप्त करने के लिए वेरिएबल को निर्यात करने की आवश्यकता है - जिसमें एक शेल स्क्रिप्ट शामिल है, जैसा कि नीचे दिखाया गया है।

उदाहरण 4. Bash वेरिएबल निर्यात करना

$ export VAR2=LINUX $ cat var2.sh #!/bin/bash echo "VAR2=$VAR2" VAR2=UNIX echo "VAR2=$VAR2"

अब उपरोक्त स्क्रिप्ट निष्पादित करें।

$ ./var2.sh VAR2=LINUX VAR2=UNIX $ $echo $VAR2 LINUX

अब, आप देख सकते हैं कि शेल स्क्रिप्ट var2.sh के निष्पादन के बाद, VAR2 का मान LINUX है। क्योंकि वेरिएबल्स को आपके इंटरैक्टिव शेल में वापस पास नहीं किया जाएगा, जब तक कि आप स्क्रिप्ट को वर्तमान शेल में निष्पादित न करें।

Bash वेरिएबल घोषित करना

Bash में declare स्टेटमेंट का उपयोग करके, हम वेरिएबल्स को असाइन किए गए मान को सीमित कर सकते हैं। यह वेरिएबल्स के गुणों को प्रतिबंधित करता है। declare स्टेटमेंट में विकल्प का उपयोग वेरिएबल के प्रकार को निर्धारित करने के लिए किया जाता है।

सिंटैक्स:

declare option variablename
  • declare एक कीवर्ड है
  • विकल्प हो सकता है:
    • -r रीड-ओनली वेरिएबल
    • -i पूर्णांक वेरिएबल
    • -a सरणी वेरिएबल
    • -f फ़ंक्शन्स के लिए
    • -x बाद के कमांड्स के लिए पर्यावरण के माध्यम से घोषित और निर्यात करता है।

उदाहरण 5. Declare का उपयोग करके Bash वेरिएबल की घोषणा

$ cat declar.sh #!/bin/bash declare -i intvar intvar=123 # पूर्णांक मान असाइन करना। echo $intvar intvar=12.3 # एक पूर्णांक वेरिएबल में स्ट्रिंग प्रकार का मान संग्रहीत करने का प्रयास echo $intvar declare -r rovar=281 rovar=212 # रीड-ओनली वेरिएबल को बदलने का प्रयास।

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

$ ./declar.sh 123 t.sh: line 6: 12.3: syntax error: invalid arithmetic operator (error token is ".3") 123 t.sh: line 11: rovar: readonly variable

ग्लोबल Bash वेरिएबल्स

ग्लोबल वेरिएबल्स को पर्यावरण वेरिएबल्स भी कहा जाता है, जो सभी शेल्स के लिए उपलब्ध होंगे। printenv कमांड का उपयोग सभी पर्यावरण वेरिएबल्स को प्रदर्शित करने के लिए किया जाता है।

$ printenv SHELL=/bin/bash HISTSIZE=1000 SSH_TTY=/dev/pts/1 HOME=/root LOGNAME=root CVS_RSH=ssh

लोकल Bash वेरिएबल्स

लोकल वेरिएबल्स केवल कोड ब्लॉक के भीतर दृश्यमान होते हैं। local एक कीवर्ड है जिसका उपयोग लोकल वेरिएबल्स घोषित करने के लिए किया जाता है। एक फ़ंक्शन में, एक लोकल वेरिएबल का अर्थ केवल उस फ़ंक्शन ब्लॉक के भीतर होता है।

उदाहरण 6. ग्लोबल और लोकल Bash वेरिएबल्स

$ cat localvar.sh #!/bin/bash pprint() { local lvar="Local content" echo -e "Local variable value with in the function" echo $lvar gvar="Global content changed" echo -e "Global variable value with in the function" echo $gvar } gvar="Global content" echo -e "Global variable value before calling function" echo $gvar echo -e "Local variable value before calling function" echo $lvar pprint echo -e "Global variable value after calling function" echo $gvar echo -e "Local variable value after calling function" echo $lvar

उपरोक्त स्क्रिप्ट निष्पादित करें,

$ sh t.sh Global variable value before calling function Global content Local variable value before calling function Local variable value with in the function Local content Global variable value with in the function Global content changed Global variable value after calling function Global content changed Local variable value after calling function

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

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

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

  1. Bash शेल फ़ंक्शन्स में मास्टर करें: 6 व्यावहारिक उदाहरण और टिप्स Bash शेल फ़ंक्शन्स में मास्टर करें: 6 व्यावहारिक उदाहरण और टिप्स

    Bash शेल फ़ंक्शन्स कई UNIX / Linux कमांड्स को बाद में निष्पादन के लिए एक ही नाम का उपयोग करके समूहबद्ध करने का एक तरीका है। Bash शेल फ़ंक्शन को नियमित Unix कमांड की तरह निष्पादित किया जा सकता है। शेल फ़ंक्शन्स को किसी नई प्रक्रिया को बनाए बिना वर्तमान शेल संदर्भ में निष्पादित किया जाता है। Bash alia

  1. Bash स्क्रिप्टिंग में मास्टर करें: 5 वास्तविक-विश्व उदाहरणों के साथ एक व्यावहारिक परिचय Bash स्क्रिप्टिंग में मास्टर करें: 5 वास्तविक-विश्व उदाहरणों के साथ एक व्यावहारिक परिचय

    हमारे चल रहे Unix Sed और Unix Awk सीरीज़ के समान, हम Bash स्क्रिप्टिंग पर कई लेख पोस्ट करेंगे, जो व्यावहारिक उदाहरणों के साथ सभी Bash स्क्रिप्टिंग तकनीकों को कवर करेंगे। शेल एक प्रोग्राम है, जो उपयोगकर्ता कमांड्स की व्याख्या करता है। कमांड्स या तो उपयोगकर्ता द्वारा सीधे दर्ज की जाती हैं या शेल स्क्र