शुरुआती के लिए बैश स्क्रिप्टिंग ट्यूटोरियल

Bash Scripting Tutorial



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

सामग्री:

  1. टिप्पणियाँ
  2. इको कमांड
  3. चर
  4. सशर्त बयान
  5. छोरों
  6. कार्यों
  7. एक स्क्रिप्ट में कॉलिंग प्रोग्राम
  8. मेनू बनाना
  9. कमांड लाइन प्रोसेसिंग
  10. अंकगणित
  11. स्ट्रिंग हेरफेर
  12. एक स्क्रिप्ट से रिटर्न कोड लौटाना और दूसरी स्क्रिप्ट में पकड़ना
  13. फाइलों को पढ़ना और लिखना
  14. पाइप्स

टिप्पणियाँ

कोड के साथ टिप्पणियाँ जोड़ना किसी भी प्रोग्रामिंग भाषा का एक अनिवार्य हिस्सा है। निष्पादन के समय टिप्पणियों को स्क्रिप्ट के साथ पार्स नहीं किया जाता है। पाठक किसी भी कोड को ठीक से समझ सकता है यदि कोड पर अच्छी तरह से टिप्पणी की गई हो। आप बैश स्क्रिप्ट में कई तरह से एक टिप्पणी जोड़ सकते हैं। आप बैश स्क्रिप्ट में सिंगल-लाइन और मल्टी-लाइन कमेंट कैसे जोड़ सकते हैं, इस भाग में दिखाया गया है। बैश टिप्पणी के उपयोग को जानने के लिए निम्न स्क्रिप्ट के साथ एक बैश फ़ाइल बनाएँ। यहाँ, '#' चिन्ह का प्रयोग एकल-पंक्ति टिप्पणी जोड़ने के लिए किया जाता है और एकल उद्धरण (') के साथ ':' का उपयोग बहु-पंक्ति टिप्पणियों को जोड़ने के लिए किया जाता है।







bash_comment.sh



#!/बिन/बैश
#इनपुट के रूप में एक नंबर लें
फेंक दिया 'एक नंबर दर्ज करें'
पढ़नाप्रति
:'
चेक इनपुट नंबर है
10 से कम या 10 से अधिक या 10 . के बराबर
'

अगर [[ $ ए -एलटीई 10 ]]
फिर
फेंक दिया 'संख्या 10 से कम है'
एलिफ [[ $ ए -जीटी 10 ]]
फिर
फेंक दिया 'संख्या 10 से अधिक है'
अन्यथा
फेंक दिया 'संख्या 10 के बराबर है'
होना

आउटपुट:



स्क्रिप्ट चलाएँ।





$दे घुमा केbash_comment.sh

यहां, इनपुट मान 3, 10 और 90 के साथ स्क्रिप्ट को तीन बार निष्पादित किया जाता है। निम्न आउटपुट दिखाई देगा।



अगर आप बैश कमेंटिंग के बारे में और जानना चाहते हैं तो आप चेक कर सकते हैं यह ट्यूटोरियल .

ऊपर जाएँ

इको कमांड

टर्मिनल में आउटपुट प्रिंट करने के लिए बैश में `इको` कमांड का उपयोग किया जाता है। विभिन्न तरीकों से आउटपुट को प्रिंट करने के लिए बैश में इको कमांड के साथ विभिन्न विकल्पों का उपयोग किया जा सकता है। `इको` कमांड के दो सरल उपयोगों को जानने के लिए निम्न स्क्रिप्ट के साथ एक बैश फ़ाइल बनाएं। यहां, पहला `इको` कमांड एक साधारण टेक्स्ट डेटा को एक नई लाइन के साथ प्रिंट करेगा और दूसरा इको कमांड एक नई लाइन के बिना एक साधारण टेक्स्ट प्रिंट करेगा।

इको_टेस्ट.श

#!/बिन/बैश
#पहला टेक्स्ट प्रिंट करें
फेंक दिया 'नई लाइन के साथ टेक्स्ट प्रिंट करें'
#दूसरा टेक्स्ट प्रिंट करें
फेंक दिया -एन 'नई लाइन के बिना टेक्स्ट प्रिंट करें'

आउटपुट:

स्क्रिप्ट चलाएँ।

$दे घुमा केइको_टेस्ट.श

उपरोक्त आदेश को निष्पादित करने के बाद निम्न आउटपुट दिखाई देगा।

बैश में `इको` कमांड के कई अन्य उपयोग हैं। `इको` कमांड के बारे में अधिक जानने के लिए आप इस ट्यूटोरियल को देख सकते हैं।

ऊपर जाएँ

चर

परिवर्तनीय घोषणा किसी भी प्रोग्रामिंग भाषा का एक आवश्यक हिस्सा है। बैश चर को विभिन्न तरीकों से घोषित किया जा सकता है। जब एक वेरिएबल में एक वैल्यू असाइन की जाती है तो वेरिएबल की शुरुआत में किसी भी सिंबल का इस्तेमाल नहीं किया जाता है। वेरिएबल के मान को पढ़ते समय वेरिएबल नाम के साथ '$' सिंबल का प्रयोग किया जाता है। चर का उपयोग टर्मिनल से किया जा सकता है या किसी भी बैश स्क्रिप्ट में उपयोग किया जा सकता है।

निम्नलिखित कमांड एक स्ट्रिंग वैरिएबल की घोषणा करेंगे जिसका नाम है रहस्यवादी एक विशेष मान के साथ और अगले टर्मिनल में वेरिएबल के मान को प्रिंट करें।

$रहस्यवादी='मुझे बैश प्रोग्रामिंग पसंद है'
$फेंक दिया $mystr

आउटपुट:

निम्न स्क्रिप्ट के साथ एक बैश फ़ाइल बनाएँ। यहां दो चर घोषित किए गए हैं। य़े हैं $ ए तथा $बी . यदि इनपुट मान जो में संग्रहीत है $ ए के बराबर है $बी फिर संदेश, नंबर बराबर हैं अन्यथा मुद्रित किया जाएगा नंबर बराबर नहीं हैं मुद्रित किया जाएगा।

var.sh

#!/बिन/बैश
फेंक दिया 'एक नंबर दर्ज करें'
पढ़नाप्रति
बी=100
अगर [[ $ ए -ईक्यू $बी ]]
फिर
फेंक दिया 'नंबर बराबर हैं'
अन्यथा
फेंक दिया 'नंबर बराबर नहीं हैं'
होना

आउटपुट:

स्क्रिप्ट चलाएँ।

$दे घुमा केvar.sh

उपरोक्त आदेश 56 और 100 के मान के साथ दो बार निष्पादित किया जाता है। निम्न आउटपुट दिखाई देगा।

यदि आप बैश चर के बारे में अधिक जानना चाहते हैं तो आप जाँच कर सकते हैं यह ट्यूटोरियल .

ऊपर जाएँ

सशर्त बयान

किसी अन्य प्रोग्रामिंग भाषा की तरह, आप बैश में कंडीशनल स्टेटमेंट का उपयोग कर सकते हैं। ' अगर तब या ' तथा ' मामला ' स्टेटमेंट्स का इस्तेमाल मुख्य रूप से किसी प्रोग्रामिंग लैंग्वेज में कंडीशन स्टेटमेंट्स को लागू करने के लिए किया जाता है। सशर्त कथन का उपयोग करके 'अगर' कथन इस ट्यूटोरियल के इस खंड में दिखाया गया है। निम्नलिखित स्क्रिप्ट के साथ एक बैश फ़ाइल बनाएँ जहाँ सशर्त कथन का उपयोग किया जाता है। यहां, उपयोगकर्ता से इनपुट के रूप में दो मान लिए जाएंगे और वेरिएबल्स में संग्रहीत किए जाएंगे, $कोड , तथा $उम्र . 'if' स्टेटमेंट का उपयोग के मान की जांच के लिए किया जाता है $उम्र से अधिक या बराबर है १८ और का मूल्य $कोड है ११०० . यदि दोनों शर्तें सत्य हैं तो संदेश, आप फिल्म देखने के योग्य हैं अन्यथा मुद्रित किया जाएगा आप फिल्म देखने के योग्य नहीं हैं मुद्रित किया जाएगा।

cond.sh

#!/बिन/बैश

फेंक दिया 'अपना कोड दर्ज करे'
पढ़नाकोड
फेंक दिया 'अपनी आयु दर्ज करें'
पढ़नाउम्र

अगर [[ $उम्र -देना १८ && $कोड -ईक्यू '1100' ]]
फिर
फेंक दिया 'आप फिल्म देखने के योग्य हैं'
अन्यथा
फेंक दिया 'आप फिल्म देखने के योग्य नहीं हैं'
होना

आउटपुट:

स्क्रिप्ट चलाएँ।

$दे घुमा केcond.sh

विभिन्न इनपुट मान लेने के बाद निम्न आउटपुट दिखाई देगा। 1100 को एक कोड के रूप में दिया जाता है और 5 को पहले निष्पादन के लिए उम्र के रूप में दिया जाता है और यदि इन मानों के लिए स्थिति झूठी हो जाती है। 1100 को एक कोड के रूप में दिया जाता है और 45 को दूसरे निष्पादन के लिए उम्र के रूप में दिया जाता है जो कि अगर शर्त के लिए सही है।

यदि आप बैश कंडीशनल स्टेटमेंट के बारे में अधिक जानना चाहते हैं तो आप इस ट्यूटोरियल को देख सकते हैं।

ऊपर जाएँ

छोरों

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

लूप के लिए उपयोग करना

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

for.sh

#लूप के प्रत्येक पुनरावृत्ति में एक कार्यदिवस का नाम पढ़ें
के लियेदिनमेंसोमवार मंगलवार बुधवार गुरुवार शुक्रवार शनिवार रविवार
करना

# चेक करें कि कार्यदिवस का नाम सोमवार या गुरुवार है
अगर [[ $दिन=='सोमवार' || $दिन=='गुरूवार' ]]
फिर
फेंक दिया 'बैठक'$दिनसुबह 9:30 बजे'

# चेक करें कि कार्यदिवस का नाम मंगलवार या बुधवार या शुक्रवार है
एलिफ [[ $दिन=='मंगलवार' || $दिन=='बुधवार' || $दिन=='शुक्रवार' ]]
फिर
फेंक दिया 'प्रशिक्षण जारी'$दिनसुबह 11:00 बजे'
अन्यथा

#अन्य दिनों के लिए 'हॉलिडे' प्रिंट करें
फेंक दिया '$दिनछुट्टी है'
होना
किया हुआ

आउटपुट:

स्क्रिप्ट चलाएँ।

$दे घुमा केfor.sh

स्क्रिप्ट चलाने के बाद निम्न आउटपुट दिखाई देगा।

यदि आप लूप के लिए बैश का अधिक उपयोग जानना चाहते हैं तो आप इस ट्यूटोरियल को देख सकते हैं।

लूप के दौरान उपयोग करना

निम्न स्क्रिप्ट के साथ एक बैश फ़ाइल बनाएँ जहाँ ` जबकि ` लूप का उपयोग पुनरावृत्ति के लिए किया जाता है। यह लिपि 1 से 20 तक की उन संख्याओं को मुद्रित करेगी जो सम और 5 से विभाज्य हैं। यहाँ, $काउंटर चर का उपयोग लूप के पुनरावृत्ति को नियंत्रित करने के लिए किया जाता है और इस चर के मान को प्रत्येक पुनरावृत्ति में 1 से बढ़ाया जाता है। कब `अगर` शर्त सच हो जाएगी तो यह का मूल्य प्रिंट करेगा $काउंटर .

#!/बिन/बैश

#संदेश प्रिंट करें
फेंक दिया 'उन संख्याओं को प्रिंट करें जो सम हैं और 5 से विभाज्य हैं'

#काउंटर को इनिशियलाइज़ करें
काउंटर=1

#लूप को तब तक दोहराएं जब तक कि $काउंटर वैल्यू 20 . से कम या उसके बराबर न हो जाए
जबकि [ $काउंटर -NS बीस ]
करना

#चेक करें कि $काउंटर 2 और 5 से विभाज्य है
अगर [[ $काउंटर%2-ईक्यू 0 && $काउंटर%5-ईक्यू 0 ]]
फिर
#नई लाइन के बिना $काउंटर प्रिंट करें
फेंक दिया '$काउंटर'
होना

#काउंटर में 1 . की बढ़ोतरी करें
((काउंटर++))
किया हुआ
फेंक दिया 'किया हुआ'

आउटपुट:

$दे घुमा केजबकि.शो

1-20 के भीतर केवल संख्याएँ हैं जो 5 से विभाज्य और सम हैं। स्क्रिप्ट चलाने के बाद निम्न आउटपुट दिखाई देगा।

यदि आप बैश का अधिक उपयोग जानना चाहते हैं ` जबकि ` लूप तो आप जांच सकते हैं यह ट्यूटोरियल .

लूप तक उपयोग करना

निम्न स्क्रिप्ट के साथ एक बैश फ़ाइल बनाएँ जहाँ ` जब तक ` लूप का उपयोग पुनरावृत्ति के लिए किया जाता है। यह स्क्रिप्ट 0 से 20 तक सभी विषम संख्याओं को प्रिंट करेगी। $n इस स्क्रिप्ट में लूप को पुनरावृत्त करने के लिए चर का उपयोग किया जाता है।

जब तक

#!/बिन/बैश

# वेरिएबल को इनिशियलाइज़ करें, n
एन=बीस

# लूप को तब तक दोहराएं जब तक कि $n का मान 0 . से अधिक न हो जाए
जब तक [ $n -एलटीई 0 ]
करना

#चेक करें कि n का मान विषम है
अगर [[ $n%2-जीटी 0 ]]
फिर
फेंक दिया $n
होना

#n के मान में 1 . की वृद्धि करें
((एन=$n-1))
किया हुआ

आउटपुट:

स्क्रिप्ट चलाएँ।

$दे घुमा केजब तक

स्क्रिप्ट 20 से 1 तक सभी सम संख्याओं को प्रिंट करेगी। स्क्रिप्ट चलाने के बाद निम्न आउटपुट दिखाई देगा।

ऊपर जाएँ

कार्यों

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

कार्यों को कैसे घोषित किया जा सकता है और बैश स्क्रिप्ट में कॉल किया जा सकता है, यह जानने के लिए निम्न स्क्रिप्ट के साथ एक बैश फ़ाइल बनाएं। लिपि में तीन कार्यों की घोषणा की गई है। एक साधारण संदेश मुद्रित करने के लिए पहला कार्य घोषित किया गया है, शुरुआत के लिए बैश प्रोग्रामिंग . दूसरा फ़ंक्शन एक चर में एक स्ट्रिंग मान निर्दिष्ट करने के लिए घोषित किया गया है, $return_str जो छापेगा, LinuxHint के साथ बैश प्रोग्रामिंग सीखें फ़ंक्शन को कॉल करने के बाद। तीसरे फ़ंक्शन को एक तर्क मान को सर्कल त्रिज्या के रूप में पढ़ने के लिए घोषित किया जाता है जो फ़ंक्शन को कॉल करने के समय प्रदान किया जाएगा। यहां, स्थानीय तर्क मान को पढ़ने के लिए प्रयोग किया जाता है। यह फ़ंक्शन सूत्र का उपयोग करके त्रिज्या मान के आधार पर वृत्त के क्षेत्रफल की गणना करेगा, r2 और परिकलित क्षेत्र मान प्रिंट करें।

func.sh

#!/बिन/बैश

# एक साधारण कार्य घोषित करें
समारोहप्रिंट_मैसेज()
{
फेंक दिया 'शुरुआत के लिए बैश प्रोग्रामिंग'
}

# एक स्ट्रिंग मान वापस करने के लिए एक फ़ंक्शन घोषित करें
समारोहret_strdata()
{
# स्ट्रिंग मान के साथ वेरिएबल को इनिशियलाइज़ करें
वापसी_स्त्री='लिनक्सहिंट के साथ बैश प्रोग्रामिंग सीखें'
}

# तर्क मान पढ़ने के लिए एक फ़ंक्शन घोषित करें
समारोहगणना_क्षेत्र()

# पारित तर्क मान पढ़ें
स्थानीय RADIUS=$ 1
क्षेत्र= $(फेंक दिया $त्रिज्या*$त्रिज्या*3.14

# साधारण संदेश प्रिंट करने के लिए फ़ंक्शन को कॉल करें
प्रिंट_मैसेज

# उस फ़ंक्शन को कॉल करें जो एक चर में एक स्ट्रिंग मान निर्दिष्ट करेगा
ret_strdata

#चर का मान प्रिंट करें
फेंक दिया $return_str

#त्रिज्या मान पढ़ें
फेंक दिया 'त्रिज्या मान दर्ज करें'
पढ़नाकाम

# फ़ंक्शन को त्रिज्या मान के साथ कॉल करें
गणना_क्षेत्र$राड

आउटपुट:

स्क्रिप्ट चलाएँ।

$दे घुमा केfunc.sh

स्क्रिप्ट चलाने के बाद निम्न आउटपुट दिखाई देगा। फ़ंक्शन को कॉल करके पहली दो लाइनें प्रिंट होंगी, प्रिंट_मैसेज () तथा ret_strdata () . अंतिम पंक्ति फ़ंक्शन को कॉल करके प्रिंट करेगी, गणना_क्षेत्र () लिए गए इनपुट त्रिज्या मान के साथ।

यदि आप बैश फ़ंक्शन से एक स्ट्रिंग वापस करने के बारे में जानना चाहते हैं तो आप कर सकते हैं यह ट्यूटोरियल NS।

ऊपर जाएँ

एक स्क्रिप्ट में कॉलिंग प्रोग्राम

आप किसी भी बैश स्क्रिप्ट में अन्य प्रोग्राम को कॉल करने के लिए कई प्रकार के कमांड का उपयोग कर सकते हैं, जैसे स्रोत, बैश, eval, कार्यकारी , आदि मान लीजिए तीन बैश फ़ाइलें, एड.शो , घटाना.श, Multi.sh और Division.sh जोड़, घटाव, गुणा और भाग करने के लिए बनाया गया। यहां, घटाना तथा डिवीजन.शो कमांड लाइन तर्क पढ़ें। इन चारों फाइलों की स्क्रिप्ट नीचे दी गई है।

एड.शो

#!/बिन/बैश
प्रति=60
बी=40
((नतीजा=$ ए+$बी))
फेंक दिया 'का संस्करण$ ए+$बी=$परिणाम'

subract.sh

#!/बिन/बैश
प्रति=$ 1
बी=$ 2
((नतीजा=$ ए-$बी))
फेंक दिया 'का घटाव'$ ए-$बी=$परिणाम'

गुणा.शो

#!/बिन/बैश
((नतीजा=$ 1*$ 2))
फेंक दिया '$1 ​​और $2 का गुणन है$परिणाम'

डिवाइड.शो

#!/बिन/बैश
प्रति=$ 1
बी=2
((नतीजा=$ ए/$बी))
फेंक दिया 'का विभाजन'$ एद्वारा$बीहै$परिणाम'

नाम की एक बैश फ़ाइल बनाएँ, callpro.sh स्रोत, बैश, eval और निष्पादन कमांड का उपयोग करके उल्लिखित बैश फ़ाइलों को कॉल करने के लिए निम्न स्क्रिप्ट के साथ। निम्नलिखित स्क्रिप्ट चलाने से पहले आपको उपरोक्त चार फाइलों के लिए निष्पादन अनुमति सेट करनी होगी। `स्रोत` कमांड का उपयोग कॉल करने के लिए किया जाता है एड.शो फ़ाइल। `बैश` कमांड का उपयोग सबट्रैक्ट.श फाइल को निष्पादित करने के लिए किया जाता है। `eval` कमांड का उपयोग Multi.sh फ़ाइल को निष्पादित करने के लिए किया जाता है। दो इनपुट मान `eval` कमांड के लिए कमांड लाइन तर्क के रूप में भेजे जाते हैं। अंतिम कमांड निष्पादन कमांड है जो केवल पूर्ण पथ के साथ काम करता है। इसके लिए डिवाइड.श फाइल का पूरा पाथ नेम स्क्रिप्ट में दिया गया है।

callpro.sh

#!/बिन/बैश
स्क्रिप्ट1='add.sh'
स्क्रिप्ट2='घटाना.श'
स्क्रिप्ट3='गुणा.श'
स्क्रिप्ट4='/home/fahmida/code/divid.sh'

स्रोत '$script1'

दे घुमा के $script2 पचास बीस

फेंक दिया 'ए' का मान दर्ज करें
पढ़नाप्रति
फेंक दिया 'बी का मान दर्ज करें'
पढ़नाबी
eval दे घुमा के $स्क्रिप्ट3 $ ए $बी
कार्यकारी $स्क्रिप्ट4 30

आउटपुट:

स्क्रिप्ट चलाएँ।

$दे घुमा केcallpro.sh

स्क्रिप्ट चलाने के बाद निम्न आउटपुट दिखाई देगा।

ऊपर जाएँ

मेनू बनाना

एक साधारण मेनू बनाने के लिए बैश में एक उपयोगी कमांड है जिसे कहा जाता है `चुनें` आदेश। इस कमांड का उपयोग करके विभिन्न प्रकार के मेनू बनाए जा सकते हैं। इस कमांड द्वारा मेन्यू बनाने के लिए एक विशेष डेटा सूची का उपयोग किया जाता है। का उपयोग देखने के लिए निम्न कोड के साथ एक बैश फ़ाइल बनाएं `चुनें` एक मेनू बनाने के लिए आदेश। इस उदाहरण में, पांच वस्तुओं की सूची एक मेनू के रूप में मुद्रित की जाएगी और उपयोगकर्ता को सूची में से कोई भी भाषा चुनने के लिए प्रेरित करेगी। चयनित मान चर में संग्रहीत किया जाएगा, $भाषा जिसे बाद में अन्य स्ट्रिंग के साथ जोड़कर प्रिंट किया जाता है। जब तक उपयोगकर्ता प्रेस नहीं करता तब तक स्क्रिप्ट लगातार भाषा का चयन करने के लिए कहेगी 6 स्क्रिप्ट से समाप्त करने के लिए।

मेनू.शो

#!/बिन/बैश

#उपयोगकर्ता के लिए संदेश प्रिंट करें
फेंक दिया 'अपनी पसंदीदा भाषा चुनें'

# मेनू आइटम की सूची को परिभाषित करें
चुनते हैंभाषा: हिन्दीमेंसी# जावा पीएचपी पायथन बैश बाहर निकलें
करना
#चुने गए मान को प्रिंट करें
अगर [[ $भाषा=='बाहर जाएं' ]]
फिर
बाहर जाएं 0
अन्यथा
फेंक दिया 'चयनित भाषा है$भाषा'
होना
किया हुआ

आउटपुट:

स्क्रिप्ट चलाएँ।

$दे घुमा केमेनू.शो

निम्नलिखित आउटपुट के अनुसार, उपयोगकर्ता ने पहली बार PHP मुद्रित करने के लिए 3 दबाया और स्क्रिप्ट से समाप्त होने वाली दूसरी बार 6 दबाया।

यदि आप `सेलेक्ट` के साथ बैश मेनू निर्माण के बारे में अधिक जानना चाहते हैं तो आप इस ट्यूटोरियल पर जा सकते हैं।

ऊपर जाएँ

कमांड लाइन प्रोसेसिंग

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

कमांड लाइन तर्क मान पढ़ने के उपयोग को देखने के लिए निम्न स्क्रिप्ट के साथ एक बैश फ़ाइल बनाएं। यह स्क्रिप्ट तीन कमांड लाइन तर्कों को पढ़ेगी जो चर, $operand1, $operand2 और $operator में संग्रहीत की जाएंगी। स्क्रिप्ट को ठीक से निष्पादित करने के लिए, पहला और तीसरा तर्क मान संख्या होना चाहिए और दूसरा तर्क मान चार अंकगणितीय ऑपरेटरों ('+', '-', '/', 'x') में से कोई भी होना चाहिए। अगर स्टेटमेंट $ऑपरेटर के मूल्य की जाँच करेगा और ऑपरेटर के आधार पर ऑपरेशन करेगा और मूल्य को प्रिंट करेगा।

cl1.sh

#!/बिन/बैश

#तर्क चर प्रिंट करें
फेंक दिया 'तर्क मान हैं: $1 $2 $3'

# तर्क मूल्यों को स्टोर करें
संकार्य1=$ 1
संकार्य २=$3
ऑपरेटर=$ 2

# अंकगणितीय ऑपरेशन करने के लिए दूसरा कमांड तर्क मान जांचें
अगर [[ $ऑपरेटर=='+' ]]
फिर
((नतीजा=$ ऑपरेंड1+$ ऑपरेंड2))
एलिफ [[ $ऑपरेटर=='-' ]]
फिर
((नतीजा=$ ऑपरेंड1-$ ऑपरेंड2))
एलिफ [[ $ऑपरेटर=='एक्स' ]]
फिर
((नतीजा=$ ऑपरेंड1*$ ऑपरेंड2))
एलिफ [[ $ऑपरेटर=='/' ]]
फिर

((नतीजा=$ ऑपरेंड1/$ ऑपरेंड2))
होना

#परिणाम प्रिंट करें
फेंक दिया -और 'परिणाम है =$परिणाम'

आउटपुट:

स्क्रिप्ट चलाएँ।

$दे घुमा केcl1.sh

चार प्रकार के अंकगणितीय ऑपरेटरों के लिए स्क्रिप्ट को चार बार निष्पादित किया जाता है। तर्क मानों के लिए निम्न आउटपुट दिखाई देगा, ६ + ३, ६ - ३, ६ x ३ और ६ / ३ .

तर्क मूल्यों को बैश में नाम-मूल्य जोड़ी के साथ पारित किया जा सकता है। नाम के साथ तर्क मानों को कैसे पढ़ा जाए, यह दिखाने के लिए निम्न स्क्रिप्ट के साथ एक बैश फ़ाइल बनाएँ। स्क्रिप्ट दो तर्क चर पढ़ेगी। नाम के साथ तर्क मान स्क्रिप्ट के पहले कथन में मुद्रित होते हैं। इसके बाद, लूप के लिए उस सरणी को पुनरावृत्त करने के लिए उपयोग किया जाता है जिसमें कमांड लाइन तर्क मान होते हैं। सरणी के प्रत्येक तत्व को `कट` कमांड का उपयोग करके की-वैल्यू पेयर में अलग किया जाता है। अगला, केस स्टेटमेंट का उपयोग कुंजी मान के आधार पर किसी विशेष संदेश को प्रिंट करने के लिए किया जाता है।

cl2.sh

#! /पूर्वाह्न/दे घुमा के

#तर्क चर प्रिंट करें
फेंक दिया 'तर्क मान हैं: $1 $2'

# लूप के लिए प्रत्येक तर्क को अलग से पढ़ें
के लियेगुस्सामें ' [ईमेल संरक्षित]'
करना

#अलग तर्क नाम और मूल्य
चाभी= $(फेंक दिया $ arg | कट गया -f1 -डी=)
मूल्य= $(फेंक दिया $ arg | कट गया -f2 -डी=)

#तर्क के नाम के आधार पर संदेश प्रिंट करें
मामला $कुंजी में
नाम) फेंक दिया छात्र का नाम =$मूल्य';;
निशान) फेंक दिया 'प्राप्त चिह्न =$मूल्य' ;;
*)
esac
किया हुआ

आउटपुट:

निम्नलिखित कमांड लाइन तर्कों के साथ स्क्रिप्ट चलाएँ।

$दे घुमा केcl2.shनाम=अबीर हुसैननिशान=90

उपरोक्त आदेशों में दो कमांड लाइन तर्क दिए गए हैं। य़े हैं नाम = अबीर हुसैन तथा निशान = 90 . नाम तथा निशान स्क्रिप्ट द्वारा अलग किए जाते हैं और आउटपुट स्वरूपित करने के बाद दो मान मुद्रित होते हैं।

प्रसंस्करण कमांड लाइन तर्क का उपयोग करके गेटोप्ट्स इस ट्यूटोरियल में फ़ंक्शन पर चर्चा नहीं की गई है। यदि आप कमांड लाइन प्रोसेसिंग के बारे में जानना चाहते हैं गेटोप्ट्स समारोह तो आप जा सकते हैं यह ट्यूटोरियल .

ऊपर जाएँ

अंकगणित

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

arith.sh

#!/बिन/बैश
# योग की गणना करें
नतीजा= $((पचास+25))
# प्रिंट योग मूल्य
फेंक दिया 'योग =$परिणाम'

# विभाजन की गणना करें
नतीजा= $((पचास/25))
# प्रिंट डिवीजन वैल्यू
फेंक दिया 'विभाजन =$परिणाम'

# N . को एक मान असाइन करें
एन=10
#प्री-इंक्रीमेंट करना
((--एन))
# N . का मान प्रिंट करें
फेंक दिया 'कमी के बाद मूल्य =$N'

# शॉर्टहैंड ऑपरेटर का उपयोग करना
((एन +=10 ))
# N . का मान प्रिंट करें
फेंक दिया 10 जोड़ने के बाद मान =$N'

आउटपुट:

स्क्रिप्ट चलाएँ।

$दे घुमा केarith.sh

स्क्रिप्ट चलाने के बाद निम्न आउटपुट दिखाई देगा।

इस उपरोक्त लिपि में सभी अंकगणितीय संक्रियाएं दोहरे कोष्ठकों का उपयोग करके की जाती हैं। लेकिन आप इस्तेमाल कर सकते हैं' होने देना ',' एक्सप्रेस ' तथा ' बीसी बैश में अंकगणितीय ऑपरेशन करने की आज्ञा। यदि आप बैश अंकगणितीय संचालन करने के लिए इन आदेशों के बारे में अधिक जानना चाहते हैं तो आप इस ट्यूटोरियल पर जा सकते हैं।

ऊपर जाएँ

स्ट्रिंग मैनिपुलेशन

बैश में स्ट्रिंग डेटा के साथ कई प्रकार के कार्य किए जा सकते हैं। कुछ स्ट्रिंग की तुलना कर रहे हैं, स्ट्रिंग की तुलना कर रहे हैं, एक स्ट्रिंग को विभाजित कर रहे हैं, स्ट्रिंग का केस बदल रहे हैं, आदि। स्ट्रिंग ऑपरेशन करने के लिए बैश में अन्य मानक भाषाओं की तरह कोई अंतर्निहित स्ट्रिंग फ़ंक्शन नहीं हैं। इस ट्यूटोरियल के इस भाग में कुछ सामान्य स्ट्रिंग जोड़तोड़ पर चर्चा की गई है।

जोड़ने वाली स्ट्रिंग

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

concat.sh

#!/बिन/बैश

#पहले स्ट्रिंग वैरिएबल को इनिशियलाइज़ करें
स्ट्रिंग1='मैं पसंद करता हूं '
#दूसरे स्ट्रिंग वैरिएबल को इनिशियलाइज़ करें
स्ट्रिंग2='बैश प्रोग्रामिंग'
#दोनों तारों को मिलाकर प्रिंट करें
फेंक दिया '$स्ट्रिंग1$स्ट्रिंग2'

आउटपुट:

स्क्रिप्ट चलाएँ।

$दे घुमा केconcat.sh

स्क्रिप्ट चलाने के बाद निम्न आउटपुट दिखाई देगा।

आप इस ट्यूटोरियल से स्ट्रिंग कॉन्सटेनेशन के बारे में अधिक जान सकते हैं।

ऊपर जाएँ

स्ट्रिंग की तुलना करना

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

तुलना.शो

#!/बिन/बैश
फेंक दियाकोई स्ट्रिंग मान दर्ज करें
पढ़नामूलपाठ

#चेक करें कि इनपुट डेटा पायथन के बराबर है
अगर [ $पाठ=='पायथन' ];फिर
फेंक दिया 'आपको पायथन पसंद है।'
अन्यथा
फेंक दिया 'आपको पर्ल पसंद है'
होना

आउटपुट:

स्क्रिप्ट चलाएँ।

$दे घुमा केतुलना.शो

निम्नलिखित आउटपुट स्क्रिप्ट चलाने के बाद दिखाई देगा जहां इनपुट मान 'PERL' है।

आप स्ट्रिंग तुलना के बारे में अधिक जान सकते हैं यह ट्यूटोरियल .

विभाजन स्ट्रिंग

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

स्प्लिट.शो

#!/बिन/बैश
# एक स्ट्रिंग मान इनपुट करें
फेंक दियाएक स्ट्रिंग मान दर्ज करें
पढ़नामूलपाठ
# सीमांकक सेट करें
भारतीय विदेश सेवा=''
#स्पेस डिलीमीटर के आधार पर $text के मान को एक ऐरे में विभाजित करें
पढ़ना -प्रतिआगमन<<< '$पाठ'
# सरणी के प्रत्येक मान को प्रिंट करें
के लियेमूल्यमें '${गिरफ्तारी[@]}';
करना
printf '$मूल्यएन'
किया हुआ

आउटपुट:

स्क्रिप्ट चलाएँ।

$दे घुमा केस्प्लिट.शो

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

आप स्ट्रिंग तुलना के बारे में अधिक जान सकते हैं यह ट्यूटोरियल .

स्ट्रिंग का केस बदलना

अधिकांश स्क्रिप्टिंग भाषाओं में स्ट्रिंग डेटा के मामले को बदलने के लिए अंतर्निहित कार्य होते हैं। लेकिन स्ट्रिंग डेटा के मामले को उपयोग करके बैश में बदला जा सकता है `त्र` आदेश या उपयोग करके ': ऊपरी' तथा ': निचला' खोजशब्द। बैश में केस बदलने के तरीके जानने के लिए निम्न स्क्रिप्ट के साथ एक बैश फ़ाइल बनाएँ। यहां, पहली स्ट्रिंग डेटा का उपयोग करके अपरकेस में परिवर्तित किया जाता है '^^' प्रतीक और दूसरी स्ट्रिंग का उपयोग करके लोअरकेस में परिवर्तित किया जाता है `त्र` आदेश। `त्र` कमांड स्ट्रिंग में सभी अपरकेस अक्षर खोजेगा और वर्णों को लोअरकेस में बदल देगा।

केस.शो

#!/बिन/बैश

#पहले स्ट्रिंग डेटा को इनिशियलाइज़ करें
पाठ 1=' [ईमेल संरक्षित]'

#सभी वर्णों को अपरकेस में बदलकर $text1 का मान प्रिंट करें
फेंक दिया ${ईमेल^^}

#दूसरा स्ट्रिंग डेटा प्रारंभ करें
टेक्स्ट 2='बैश प्रोग्रामिंग मूल बातें'

#सभी अपरकेस को लोअरकेस में बदलकर $text2 का मान प्रिंट करें
फेंक दिया $text2 | एन एस [:ऊपरी:] [:निचला:]

आउटपुट:

स्क्रिप्ट चलाएँ।

$दे घुमा केकेस.शो

स्क्रिप्ट चलाने के बाद निम्न आउटपुट दिखाई देगा।

आप स्ट्रिंग तुलना के बारे में अधिक जान सकते हैं यह ट्यूटोरियल .

ऊपर जाएँ

लूप के माध्यम से स्ट्रिंग डेटा पढ़ना

स्ट्रिंग डेटा किसी भी प्रोग्रामिंग भाषा के लिए एक वर्ण सरणी के रूप में काम करता है। कैसे ' के लिये ' इस खंड में दिखाए गए बैश में स्ट्रिंग डेटा को पढ़ने के लिए लूप का उपयोग किया जा सकता है। लूप के लिए उपयोग करके स्ट्रिंग मान के प्रत्येक भाग को पढ़ने के लिए निम्न स्क्रिप्ट के साथ एक आधार फ़ाइल बनाएँ।

readstr.sh

#!/बिन/बेस
# लूप के लिए उपयोग करके टेक्स्ट के प्रत्येक शब्द को पढ़ें
के लियेमूल्यमेंबैश प्रोग्रामिंगके लियेद बिगिनर्स
करना
फेंक दिया $मूल्य
किया हुआ

आउटपुट:

स्क्रिप्ट चलाएँ।

$दे घुमा केreadstr.sh

स्क्रिप्ट चलाने के बाद निम्न आउटपुट दिखाई देगा।

आप से लूप का उपयोग करके स्ट्रिंग डेटा को पुनरावृत्त करने के बारे में अधिक जान सकते हैं यह ट्यूटोरियल .

ऊपर जाएँ

एक स्क्रिप्ट से रिटर्न कोड लौटाना और दूसरी स्क्रिप्ट में पकड़ना

एक बैश स्क्रिप्ट स्क्रिप्ट को कॉल करके और उपयोग करके दूसरी स्क्रिप्ट से रिटर्न कोड पकड़ सकती है '$?' वापसी मूल्य पढ़ने के लिए। मान लीजिए, नाम की एक बैश फ़ाइल प्रथम.शो निष्पादन के बाद एक कोड देता है। नाम से एक और बैश फाइल बनाएं दूसरा.शो और वापसी मूल्य को पकड़ने और कुछ अन्य कार्य करने के लिए निम्न स्क्रिप्ट जोड़ें। दोनों फाइलों का कोड नीचे दिया गया है। प्रथम.शो फ़ाइल से कॉल किया जाएगा दूसरा.शो स्क्रिप्ट की शुरुआत में फ़ाइल। प्रथम.शो इनपुट मान के आधार पर एक एक्जिट कोड लौटाएगा। second.sh कोड को पकड़ लेगा '$?' और 1 से तुलना करें। यदि दोनों मान समान हैं तो यह प्रिंट होगा, इनपुट संख्या 100 . से अधिक है , अन्यथा यह प्रिंट होगा, इनपुट संख्या 100 . से कम या उसके बराबर है .

प्रथम.शो

#!/बिन/बैश

फेंक दिया 'संख्यात्मक मान दर्ज करें'
पढ़नाएन

# जांचें कि इनपुट मान 100 से कम या उसके बराबर है या नहीं
अगर [[ $n -NS 100 ]]
फिर
बाहर जाएं 0
अन्यथा
बाहर जाएं 1
होना

दूसरा.शो

#! /बिन/बाश

#फ़ाइल निष्पादित करें, पहले.sh
दे घुमा के 'फर्स्ट.श'

#चेक करें कि रिटर्न कोड 1 के बराबर है या नहीं
अगर [ $? -ईक्यू 1 ]
फिर
फेंक दिया 'इनपुट संख्या 100 से अधिक है'
अन्यथा
फेंक दिया 'इनपुट संख्या 100 से कम या उसके बराबर है'
होना

आउटपुट:

स्क्रिप्ट चलाएँ।

$दे घुमा केदूसरा.शो

निम्न आउटपुट तब दिखाई देगा जब स्क्रिप्ट को 55 और 110 द्वारा दो बार निष्पादित किया जाएगा।

ऊपर जाएँ

फाइलों को पढ़ना और लिखना

फ़ाइलों को पढ़ना और लिखना बैश प्रोग्रामिंग की सामान्य आवश्यकताएं हैं। फ़ाइल को पढ़ने या लिखने के लिए बैश में किसी अन्य भाषा की तरह कोई अंतर्निहित कार्य नहीं है। फ़ाइल को बैश में पढ़ने के कई तरीके हैं। बैश में किसी फ़ाइल को पढ़ने या लिखने का सबसे आम तरीका उपयोग कर रहा है बिल्ली आदेश। लेकिन इस कमांड का इस्तेमाल एक बार में फाइल के पूरे कंटेंट को पढ़ने के लिए किया जाता है। आप किसी भी लूप का उपयोग करके किसी भी फाइल लाइन को लाइन से पढ़ सकते हैं और 'पढ़ें' आदेश। रीडायरेक्ट ऑपरेटर का उपयोग करना, '>' , आप बैश में किसी भी फाइल में डेटा लिख ​​सकते हैं। यदि आप किसी फाइल में डेटा जोड़ना चाहते हैं तो आपको उपयोग करना होगा '>>' ऑपरेटर। फ़ाइल संचालन को पढ़ना और लिखना दोनों इस खंड के अगले भाग में दिखाए गए हैं।

बैश में फ़ाइल पढ़ना

'नाम की मौजूदा फ़ाइल को पढ़ने के लिए निम्न स्क्रिप्ट के साथ एक बैश फ़ाइल बनाएँ हार्डवेयर.txt '। इस फ़ाइल की सामग्री नीचे दी गई है। स्क्रिप्ट में, फ़ाइल की पूरी सामग्री किसके द्वारा पढ़ी जाती है बिल्ली कमांड फर्स्ट और नेक्स्ट, जबकि लूप का इस्तेमाल फाइल लाइन को लाइन से पढ़ने के लिए किया जाता है।

हार्डवेयर.txt

मॉनिटर
कीबोर्ड
चूहा
चित्रान्वीक्षक
मुद्रक

readfile.sh

#!/बिन/बैश

फेंक दिया 'कैट कमांड का उपयोग कर फाइल पढ़ना'

# `बिल्ली` कमांड का उपयोग करके फ़ाइल की सामग्री पढ़ें
विषय=``बिल्लीहार्डवेयर.txt``
फेंक दिया $सामग्री

फेंक दिया 'लूप का उपयोग करके लाइन द्वारा फ़ाइल लाइन पढ़ना'

# फ़ाइल नाम असाइन करें
फ़ाइल का नाम='हार्डवेयर.txt'

# फ़ाइल की प्रत्येक पंक्ति को लूप के प्रत्येक पुनरावृत्ति द्वारा पढ़ा जाएगा
जबकि पढ़नारेखा;
करना
# लाइन प्रिंट करें
फेंक दिया $लाइन
किया हुआ<$फ़ाइलनाम

आउटपुट:

निम्न आदेश चलाएँ।

$बिल्लीहार्डवेयर.txt
$दे घुमा केreadfile.sh

यहां, पहला कमांड फ़ाइल की सामग्री को प्रिंट करेगा, हार्डवेयर.txt बिना किसी बैश स्क्रिप्ट को चलाए और दूसरा कमांड स्क्रिप्ट को चलाएगा readfile.sh और फ़ाइल की सामग्री को दो बार उपयोग करके प्रिंट करें बिल्ली आदेश और 'पढ़ें' जबकि लूप के साथ कमांड। आप इस पर जा सकते हैं ट्यूटोरियल फ़ाइल लाइन को लाइन से पढ़ने के बारे में और जानने के लिए।

बैश में फ़ाइल लिखना

एक नई फ़ाइल में नई सामग्री लिखने और उस फ़ाइल में डेटा जोड़ने के लिए निम्न स्क्रिप्ट के साथ एक बैश फ़ाइल बनाएँ।

राइटफाइल.शो

#!/बिन/बैश

फेंक दिया 'कुछ पाठ दर्ज करें'
#स्ट्रिंग डेटा पढ़ें
पढ़नाstr1
#पहली बार फ़ाइल में इनपुट डेटा जोड़ें
फेंक दिया $str1 >test.txt

फेंक दिया 'कोई अन्य पाठ दर्ज करें'
#एक और स्ट्रिंग डेटा पढ़ें
पढ़नाstr2
#फ़ाइल के अंत में इनपुट डेटा जोड़ें
फेंक दिया $str2 >>test.txt

#फ़ाइल की पूरी सामग्री दिखाएं
फेंक दिया ``बिल्लीtest.txt``

आउटपुट:

स्क्रिप्ट चलाएँ।

$दे घुमा केराइटफाइल.शो

स्क्रिप्ट चलाने के बाद निम्न आउटपुट दिखाई देगा।

ऊपर जाएँ

पाइप्स

पाइप का उपयोग किसी भी कमांड आउटपुट को अन्य कमांड इनपुट पर रीडायरेक्ट करने के लिए किया जाता है। इसका उपयोग विशिष्ट आउटपुट उत्पन्न करने के लिए विभिन्न प्रकार के बैश कमांड के बीच किया जा सकता है। मानक इनपुट पाइप द्वारा लिनक्स में मानक आउटपुट के साथ जुड़ा हुआ है। वांछित आउटपुट प्राप्त करने के लिए आपको पाइप ( | ) प्रतीक के साथ अनुक्रम में कमांड सेट करने की आवश्यकता है। पाइप का उपयोग करके एक ही कमांड में दो या दो से अधिक कमांड को एक साथ निष्पादित किया जा सकता है। आपको एक ही कार्य करने के लिए बिना पाइप के कई पंक्तियों में कई कमांड निष्पादित करने होंगे। तो कई प्रकार के कार्यों को संक्षिप्त रूप में करने के लिए पाइप का उपयोग करना बहुत फायदेमंद होता है।

वाक्य - विन्यास:

कमांड1|कमांड २|...

यहां, कमांड 1 के आउटपुट को कमांड 2 के इनपुट के रूप में पास किया जाएगा।

इसी प्रकार का कार्य इस खंड के अगले भाग में पाइप के साथ और बिना पाइप के किया जाता है। मान लीजिए नाम की एक टेक्स्ट फ़ाइल मार्क्स.txt निम्नलिखित डेटा के साथ दिया गया है।

मार्क्स.txt

असरफ सीएसई-409 79

कबीर सीएसई-३०४ 95

कीया सीएसई-१०१ 67

असरफ सीएसई-३०४ 88

कीया सीएसई-409 90

असरफ सीएसई-१०१ 92

आपको फ़ाइल के डेटा को सॉर्ट करना है और छात्र के नाम 'के' की सभी प्रविष्टि का पता लगाना और प्रिंट करना है हां ' . आप इस कार्य को अगले भाग में दिखाए गए पाइप का उपयोग किए बिना कई कमांड चलाकर कर सकते हैं। वांछित आउटपुट प्राप्त करने के लिए निम्न आदेशों को चलाने की आवश्यकता होगी। पहला कमांड फाइल को सॉर्ट करेगा। दूसरा कमांड 'K .' प्रविष्टि को खोजेगा हां ' ` . का उपयोग करना पकड़ `कमांड करें और आउटपुट को स्टोर करें एक अस्थायी.txt फ़ाइल। तीसरा आदेश a . की कुल पंक्तियों की गणना करेगा अस्थायी.txt फ़ाइल का उपयोग करके `डब्ल्यूसी` आदेश।

$तरहमार्क्स.txt
$पकड़ 'कीया'मार्क्स.txt>अस्थायी.txt
$स्वागत -NSअस्थायी.txt

आउटपुट:

फ़ाइल में छात्र की दो प्रविष्टियाँ, 'कीया' मौजूद हैं। तो उपरोक्त आदेशों को चलाने के बाद, निम्न आउटपुट दिखाई देगा।

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

$तरहमार्क्स.txt| पकड़ 'कीया' | स्वागत -NS

आउटपुट:

उपरोक्त कमांड को चलाने के बाद आपको पिछले कमांड के आउटपुट की तरह निम्न आउटपुट मिलेगा। कमांड का आउटपुट 2 होगा।

ऊपर जाएँ

निष्कर्ष:

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