बैश रेंज: शेल पर उत्पन्न अनुक्रमों पर पुनरावृति कैसे करें

Bash Range How Iterate Over Sequences Generated Shell



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

seq कमांड के विकल्प:

आप उपयोग कर सकते हैं स्व-परीक्षा प्रश्न निम्नलिखित विकल्पों का उपयोग करके आदेश दें।







-में

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



-एफ प्रारूप

इस विकल्प का उपयोग विशेष प्रारूप के साथ नंबर प्रिंट करने के लिए किया जाता है। फ़्लोटिंग नंबर को %f, %g और %e को रूपांतरण वर्णों के रूप में उपयोग करके स्वरूपित किया जा सकता है। %g डिफ़ॉल्ट के रूप में प्रयोग किया जाता है।



-एस स्ट्रिंग

इस विकल्प का उपयोग संख्याओं को स्ट्रिंग से अलग करने के लिए किया जाता है। डिफ़ॉल्ट मान न्यूलाइन (' n') है।





seq कमांड के उदाहरण:

आप seq कमांड को तीन तरह से अप्लाई कर सकते हैं। आप केवल ऊपरी सीमा या ऊपरी और निचली सीमा या प्रत्येक चरण की वृद्धि या कमी मान के साथ ऊपरी और निचली सीमा का उपयोग कर सकते हैं। विकल्पों के साथ seq कमांड के विभिन्न उपयोग निम्नलिखित उदाहरणों में दिखाए गए हैं।

उदाहरण -1: विकल्प के बिना seq कमांड

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



$स्व-परीक्षा प्रश्न 4

आउटपुट:

जब दो मानों का उपयोग seq कमांड के साथ किया जाता है तो पहला मान प्रारंभिक संख्या के रूप में उपयोग किया जाएगा और दूसरा मान समाप्ति संख्या के रूप में उपयोग किया जाएगा। निम्न आदेश संख्या को 7 से 15 तक प्रिंट करेगा।

$स्व-परीक्षा प्रश्न 7 पंद्रह

आउटपुट:

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

$स्व-परीक्षा प्रश्न 10 -2 1

आउटपुट:

उदाहरण -2: seq with –w option

निम्न आदेश 1 से 9 तक की संख्या के लिए अग्रणी शून्य जोड़कर आउटपुट को प्रिंट करेगा।

$स्व-परीक्षा प्रश्न -में0110

आउटपुट:

उदाहरण -3: seq with –s विकल्प

निम्न कमांड का उपयोग करता है - प्रत्येक अनुक्रम संख्या के लिए विभाजक के रूप में। संख्याओं का क्रम - विभाजक के रूप में जोड़कर प्रिंट होगा।

$स्व-परीक्षा प्रश्न -एस-8

आउटपुट:

उदाहरण -4: seq साथ -f विकल्प

निम्नलिखित कमांड 1 से शुरू होने वाले 10 दिनांक मानों को प्रिंट करेगा। यहां, अन्य स्ट्रिंग मान के साथ अनुक्रम संख्या जोड़ने के लिए %g विकल्प का उपयोग किया जाता है।

$स्व-परीक्षा प्रश्न -एफ '%g/04/2018' 10

आउटपुट:

बैश रेंज

%f का उपयोग करके फ्लोटिंग पॉइंट नंबर के अनुक्रम को उत्पन्न करने के लिए निम्न कमांड का उपयोग किया जाता है। यहां, संख्या 3 से शुरू होगी और प्रत्येक चरण में 0.8 की वृद्धि होगी और अंतिम संख्या 6 से कम या उसके बराबर होगी।

$स्व-परीक्षा प्रश्न -एफ '%एफ' 3 0.8 6

आउटपुट:

उदाहरण -5: अनुक्रम को फ़ाइल में लिखें

यदि आप कंसोल में प्रिंट किए बिना संख्या के अनुक्रम को फ़ाइल में सहेजना चाहते हैं तो आप निम्न आदेशों का उपयोग कर सकते हैं। पहला कमांड नाम की फाइल में नंबर प्रिंट करेगा seq.txt . संख्या 5 से 20 तक उत्पन्न होगी और प्रत्येक चरण में 10 की वृद्धि होगी। दूसरे कमांड का प्रयोग की सामग्री को देखने के लिए किया जाता है seq.txt फ़ाइल।

$ सेक 5 10 20 | बिल्ली > seq.txt
$ बिल्ली seq.txt

आउटपुट:

उदाहरण -6: लूप के लिए seq in का उपयोग करना

मान लीजिए, आप seq के साथ लूप के लिए fn1 से fn10 नाम की फाइलें बनाना चाहते हैं। sq1.bash नाम की एक फ़ाइल बनाएँ और निम्न कोड जोड़ें। लूप के लिए seq कमांड का उपयोग करके 10 बार पुनरावृति करेगा और अनुक्रम fn1, fn2, fn3…..fn10 में 10 फाइलें बनाएगा।

#!/बिन/बैश
के लियेमैंमें ``स्व-परीक्षा प्रश्न 10``
करना
स्पर्शएफएन$मैं
किया हुआ

आउटपुट:

बैश फ़ाइल के कोड को निष्पादित करने के लिए निम्न कमांड चलाएँ और जाँचें कि फ़ाइलें बनाई गई हैं या नहीं।

$दे घुमा केsq1.bash
$रास

सीमा के साथ लूप के उदाहरण:

उदाहरण -7: सीमा के साथ लूप के लिए

seq कमांड का विकल्प रेंज है। आप seq जैसी संख्याओं का क्रम उत्पन्न करने के लिए लूप के लिए रेंज का उपयोग कर सकते हैं। निम्नलिखित कोड को एक बैश फ़ाइल में लिखें जिसका नाम है sq2.bash . लूप 5 बार पुनरावृति करेगा और प्रत्येक चरण में प्रत्येक संख्या के वर्गमूल को प्रिंट करेगा।

#!/बिन/बैश
के लियेएनमें {1..5}
करना
((नतीजा=एन*एन))
फेंक दिया $n वर्ग=$परिणाम
किया हुआ

आउटपुट:

फ़ाइल की स्क्रिप्ट को निष्पादित करने के लिए कमांड चलाएँ।

$दे घुमा केsq2.bash

उदाहरण -8: रेंज और इंक्रीमेंट वैल्यू वाले लूप के लिए

डिफ़ॉल्ट रूप से, seq जैसी श्रेणी में प्रत्येक चरण में संख्या एक से बढ़ जाती है। आप सीमा में वृद्धि मूल्य भी बदल सकते हैं। निम्नलिखित कोड को एक बैश फ़ाइल में लिखें जिसका नाम है sq3.bash . स्क्रिप्ट में लूप के लिए 5 बार पुनरावृति होगी, प्रत्येक चरण को 2 से बढ़ाया जाता है और सभी विषम संख्याओं को 1 से 10 के बीच प्रिंट किया जाता है।

#!/बिन/बैश
फेंक दिया '1 से 10 तक की सभी विषम संख्याएँ हैं'
के लियेमैंमें {1..10..2}
करना
फेंक दिया $मैं;
किया हुआ

आउटपुट:

फ़ाइल की स्क्रिप्ट को निष्पादित करने के लिए कमांड चलाएँ।

$दे घुमा केsq3.bash

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