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

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

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

  1. लिनक्स शैल स्क्रिप्टिंग सीखें

यहां इस लेख में हम चर . देखेंगे , इसका निष्पादन और शेल स्क्रिप्ट में इसका कार्यान्वयन।

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

आउटपुट सहेजा जा रहा है

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

स्क्रिप्टिंग भाषा में वेरिएबल

शेल स्क्रिप्टिंग में उपयोग किए जाने वाले एक महत्वपूर्ण घटक हैं और बैश कमांड का उपयोग करके घोषित किए जाते हैं "घोषित करें " चर घोषित करने के लिए 'स्तर . कहें ', हमें नीचे दिए गए आदेश को निष्पादित करने की आवश्यकता है।

$ declare LEVEL

नोट :हमें “टाइपकास्ट . का उपयोग करने की आवश्यकता है ”, कॉर्न शेल संगतता के लिए एक अंतर्निहित कथन। 'घोषणा' अधिक उन्नत है और इसमें सभी विशेषताएं शामिल हैं, इसलिए BASH का उपयोग करते समय इसकी अनुशंसा की जाती है।

नियम
  1. एक चर नाम को उचित ठहराना चाहिए, स्क्रिप्ट में चर का उपयोग।
  2. पूरे कार्यक्रम में एक ही चर नाम का उपयोग करने की जोरदार सलाह दी जाती है।
  3. चर नाम अपरकेस के साथ-साथ लोअरकेस भी हो सकता है लेकिन कन्वेंशन शेल कमांड्स लोअरकेस में हैं और इसलिए हमें अपरकेस में वेरिएबल नाम का उपयोग करना चाहिए, ताकि किसी भी भ्रम को दूर किया जा सके। उदा., TOTAL_BILLED_AMOUNT, SELL_REPORT, ORDER_RECEIPT, आदि.

कार्यान्वयन

एक चर को एक समान चिह्न (= .) का उपयोग करके एक मान निर्दिष्ट किया जा सकता है ) एक चर के लिए एक खाली स्ट्रिंग असाइन करने के लिए हमें समान चिह्न के बाद कोई मान नहीं देना चाहिए।

$ LEVEL =

वेरिएबल 'LEVEL' में स्टोर किए गए मान को इस रूप में चेक करें।

$ printf "%i" $LEVEL

प्रिंटफ , अधिकांश कमांड 'C ' प्रोग्रामर जानते हैं, डेटा प्रिंट करते हैं। %i - पूर्णांक का प्रतिनिधित्व करता है। हम इसे %c . से बदल सकते हैं चरित्र या %c . के लिए स्ट्रिंग के लिए, जब और जब आवश्यक हो।

$LEVEL:'$ . पर ध्यान दें ' जो चर 'LEVEL' . के लिए मान विकल्प के रूप में काम करता है ।

नमूना आउटपुट
$ printf "%i" $LEVEL
0

चर के लिए एक मान निर्दिष्ट करें।

$ LEVEL=0

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

$ printf "%i" $LEVEL
0

ध्यान दें :यह ध्यान रखना दिलचस्प है कि दोनों ही मामलों में, जब हमने वेरिएबल को मान असाइन नहीं किया था और जब हमने '0' मान असाइन किया था ' से चर 'स्तर ' आउटपुट 0 . हालांकि आउटपुट दोनों ही मामलों में समान है लेकिन शेल स्क्रिप्ट दोनों वैरिएबल डिक्लेरेशन को अलग तरह से हैंडल करती है।

चर के लिए एक नया मान निर्दिष्ट करें।

$ LEVEL=121

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

$ printf "%i" $LEVEL
121

वेरिएबल को अनसेट करें

घोषित करें एक BASH कमांड है और यह निष्पादित होने पर ही वेरिएबल बनाता है। इस प्रकार बनाया गया वेरिएबल स्क्रिप्ट के रुकने या वेरिएबल के नष्ट होने तक मेमोरी में बना रहता है।

$ unset LEVEL

BASH में पूर्वनिर्धारित चर

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

यहाँ कुछ उपयोगी BASH चरों की सूची दी गई है।

  1. BASH—बैश का पूरा पथनाम।
  2. BASH_ENV—शेल स्क्रिप्ट में, स्क्रिप्ट शुरू होने से पहले निष्पादित की गई प्रोफ़ाइल फ़ाइल का नाम।
  3. BASH_VERSION—बैश का संस्करण (उदाहरण के लिए, 2.04.0(1)-रिलीज़)।
  4. COLUMNS—आपके प्रदर्शन पर प्रति पंक्ति वर्णों की संख्या (उदाहरण के लिए, 80)।
  5. HOSTNAME—कंप्यूटर का नाम। लिनक्स के कुछ संस्करणों के तहत, यह मशीन का नाम हो सकता है। दूसरों पर, यह पूरी तरह से योग्य डोमेन नाम हो सकता है।
  6. HOSTTYPE—कंप्यूटर का प्रकार।
  7. होम—आपके होम डायरेक्टरी का नाम।
  8. OSTYPE—ऑपरेटिंग सिस्टम का नाम।
  9. PATH—निष्पादित करने के लिए आदेश खोजने के लिए खोज पथों की बृहदान्त्र-पृथक सूची।
  10. PPID—शेल की मूल प्रक्रिया की प्रक्रिया आईडी।
  11. PROMPT_COMMAND—PS1 प्राथमिक प्रॉम्प्ट स्ट्रिंग की सेटिंग से पहले निष्पादित करने का आदेश।
  12. पीडब्ल्यूडी—वर्तमान कार्यशील निर्देशिका (सीडी कमांड द्वारा निर्धारित)।
  13. RANDOM—हर बार संदर्भित होने पर 0 और 32767 के बीच एक यादृच्छिक संख्या देता है।
  14. SHELL—उपयोग करने के लिए पसंदीदा शेल; उन कार्यक्रमों के लिए जो आपके लिए एक शेल शुरू करते हैं।
  15. TERM—टर्मिनल इम्यूलेशन प्रकार (उदाहरण के लिए, कंसोल)।

शब्द विभाजन का नियम।

$ LEVEL=0
$ printf "%i" $LEVEL
0

AND

$ LEVEL=”0”
$ printf "%i" $LEVEL
0

दोनों ही मामलों में आउटपुट समान रहता है। तो उद्धरण का उपयोग करते समय परिणाम में क्या अंतर है?

आइए इसे अलग-अलग चर डेटा के साथ जांचें।

$ LEVEL=0 ; 1 ; 2 ; 3 ; 4 ; 5
bash: 1: command not found 
bash: 2: command not found 
bash: 3: command not found 
bash: 4: command not found 
bash: 5: command not found
$ printf "%i" $LEVEL
0

उल्लेख नहीं है, आउटपुट सही नहीं है। BASH '0 . के बाद जगह ले रहा है ' समाप्ति के रूप में और इसलिए चर का मान '0 . के रूप में सेट किया गया है '। अब हम नीचे दिए गए चर के लिए उद्धरण का उपयोग करने का प्रयास करते हैं।

$ LEVEL=”0 ; 1 ; 2 ; 3 ; 4 ; 5”
$ printf "%s" $LEVEL 
0;1;2;3;4;5

फिर भी परिणाम सही नहीं है। BASH ने परिवर्तनीय मान लिया और उनके बीच के सभी रिक्त स्थान हटा दिए। इसलिए प्रिंटफ अलग-अलग मानों के रूप में 0,1,2,3,4,5 की व्याख्या नहीं की। तो समाधान क्या है?

printf "%s" "$LEVEL" 
0 ; 1 ; 2 ; 3 ; 4 ; 5

हाँ! परिवर्तनीय प्रतिस्थापन को उद्धरणों के तहत रखना समाधान है। कोटेशन वर्णों को शेल में समूहित करता है और विशेष वर्णों की अर्थपूर्ण तरीके से व्याख्या करता है।

कोटेशन का उपयोग बैक-टू-बैक किया जा सकता है और उद्धरणों के साथ परिवर्तनीय प्रतिस्थापन संलग्न करना एक अच्छा विचार है। इसके अलावा इसका उपयोग समग्र पाठ को उद्धरणों से अलग करने के लिए किया जा सकता है। यहाँ एक उदाहरण है।

$ LEVEL=5 
$ FLAG_MESSAGE="I HAVE CLEARED LEVEL""$LEVEL"". I Deserve appreciation." 
$ printf “%s” “$FLAG_MESSAGE”
“I HAVE CLEARED LEVEL5. I Deserve appreciation.”

उद्धृत पाठ के भाग को स्थान से अलग करने से वही समस्या उत्पन्न होगी जिसकी चर्चा ऊपर की गई है। बैश सफेद स्थान को समाप्ति के रूप में मानेगा। परिवर्तनीय प्रतिस्थापन का दूसरा तरीका है।

$ LEVEL=5

$ FLAG_MESSAGE="I HAVE CLEARED LEVEL ${LEVEL}. I Deserve appreciation." 

$ printf “%s” "$FLAG_MESSAGE" 
“I HAVE CLEARED LEVEL 5. I Deserve appreciation.”

सिंगल कोट्स BASH को स्पेशल कैरेक्टर प्रिंट करने से रोकता है।

$ printf “%s” '$FLAG_MESSAGE'
“$FLAG_MESSAGE”

बैकस्लैश (/)

बैकस्लैश एक कैरेक्टर के लिए सिंगल कोट की तरह काम करता है। क्या आपने सोचा है कि आप कैसे प्रिंट करेंगे ( )?

$ printf "%c" "\""

जब %q printf . के साथ समूहीकृत , शब्द रिक्ति सुनिश्चित करने के लिए प्रत्येक शब्द के बाद बैकस्लैश प्रदान करता है।

$ LEVEL=5

$ FLAG_MESSAGE="I HAVE CLEARED LEVEL ${LEVEL}. I Deserve appreciation." 

$ printf “%q” "$FLAG_MESSAGE" 
“I\ HAVE\ CLEARED\ LEVEL\ 5.\ I\ Deserve\ appreciation.”

अभी के लिए इतना ही। हम हमेशा अपने पाठकों को ऐसे लेख प्रदान करने का प्रयास करते हैं जो उनके लिए समय-समय पर उपयोगी होते हैं। उपरोक्त कवर किया गया लेख विशाल है इसलिए उदाहरणों के साथ शेष विषयों को अगले लेख में तैयार किया जाएगा जिसमें 'चर के गुण', 'परिवर्तनीय निर्यात' आदि शामिल होंगे।

तब तक जुड़े रहें और Tecmint.com से जुड़े रहें . नीचे टिप्पणी अनुभाग में हमें अपनी बहुमूल्य प्रतिक्रिया देना न भूलें।


  1. Linux Newbies और व्यवस्थापकों के लिए 4 निःशुल्क शैल स्क्रिप्टिंग ई-पुस्तकें

    सिस्टम व्यवस्थापन सूचना प्रौद्योगिकी की एक शाखा है जो बहु-उपयोगकर्ता कंप्यूटर सिस्टम और सर्वर के विश्वसनीय संचालन से संबंधित है। एक व्यक्ति जो बहुउपयोगकर्ता कंप्यूटर सिस्टम और सर्वर के विश्वसनीय संचालन के लिए जिम्मेदार होता है उसे सिस्टम एडमिनिस्ट्रेटर . कहा जाता है . एक सिस्टम एडमिनिस्ट्रेटर जिसक

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

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

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

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