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

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

बैश वैरिएबल ट्यूटोरियल - 6 प्रैक्टिकल बैश ग्लोबल और लोकल वेरिएबल उदाहरणयह लेख हमारी चल रही बैश ट्यूटोरियल श्रृंखला का हिस्सा है। किसी भी अन्य प्रोग्रामिंग भाषाओं की तरह, बैश भी चर प्रदान करता है।

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

सिंटैक्स:

VARNAME=VALUE

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

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

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

निम्न स्क्रिप्ट 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

बैश वैरिएबल स्कोप - स्थानीय और वैश्विक

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

<केंद्र>

उदाहरण 2. बैश वैरिएबल में रिक्त मान

$ 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

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

उदाहरण 3. निर्यात के बिना बैश वैरिएबल

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

$ 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. बैश वैरिएबल निर्यात करना

$ 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 है। क्योंकि जब तक आप मौजूदा शेल में स्क्रिप्ट को निष्पादित नहीं करते हैं, तब तक वेरिएबल्स को आपके इंटरेक्टिव शेल में वापस नहीं भेजा जाएगा।

बैश वैरिएबल घोषित करना

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

सिंटैक्स:

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

उदाहरण 5. घोषणा का उपयोग करके बैश चर की घोषणा

$ cat declar.sh
#!/bin/bash
declare -i intvar
intvar=123 # Assigning integer value.
echo $intvar
intvar=12.3 #Trying to store string type value to an integer variable
echo $intvar

declare -r rovar=281
rovar=212 # Trying to change the readonly variable.

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

$ ./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

ग्लोबल बैश वैरिएबल

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

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

स्थानीय बैश चर

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

उदाहरण 6. वैश्विक और स्थानीय बैश चर

$ 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. नेस्टेड चर प्रतिस्थापन और Linux में पूर्वनिर्धारित BASH चर - भाग 11

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

  1. बैश शैल फंक्शन ट्यूटोरियल 6 व्यावहारिक उदाहरणों के साथ

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

  1. बैश स्क्रिप्टिंग परिचय ट्यूटोरियल 5 व्यावहारिक उदाहरणों के साथ

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