ऑनवर्क्स लिनक्स और विंडोज ऑनलाइन वर्कस्टेशन

प्रतीक चिन्ह

वर्कस्टेशन के लिए मुफ्त होस्टिंग ऑनलाइन

<पिछला | विषय-सूची | अगला>

के लिए: पारंपरिक शैल प्रपत्र

मूल एसटी कमांड का सिंटैक्स है:

एसटी परिवर्तनशील [में शब्द]; करना

आज्ञाओं

किया

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

RSI एसटी कमांड कमांड लाइन पर उपयोगी है. हम आसानी से प्रदर्शित कर सकते हैं कि यह कैसे काम करता है:



[मुझे@लिनक्सबॉक्स ~]$ एबीसीडी में मेरे लिए; प्रतिध्वनि करो $i; हो गया

एबीसीडी

[मुझे@लिनक्सबॉक्स ~]$ एबीसीडी में मेरे लिए; प्रतिध्वनि करो $i; हो गया

एबीसीडी


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


की वास्तव में शक्तिशाली विशेषता एसटी यह उन दिलचस्प तरीकों की संख्या है जिनसे हम शब्दों की सूची बना सकते हैं। उदाहरण के लिए, ब्रेस विस्तार के माध्यम से:



[मुझे@लिनक्सबॉक्स ~]$ मेरे लिए {ए..डी} में; प्रतिध्वनि करो $i; हो गया

एबीसीडी

[मुझे@लिनक्सबॉक्स ~]$ मेरे लिए {ए..डी} में; प्रतिध्वनि करो $i; हो गया

एबीसीडी


या पथनाम विस्तार:



[मुझे@लिनक्सबॉक्स ~]$ मेरे लिए distros*.txt में; प्रतिध्वनि करो $i; हो गया

distros-by-date.txt distros-dates.txt distros-key-names.txt distros-key-vernums.txt distros-names.txt distros.txt

distros-vernums.txt distros-versions.txt

[मुझे@लिनक्सबॉक्स ~]$ मेरे लिए distros*.txt में; प्रतिध्वनि करो $i; हो गया

distros-by-date.txt distros-dates.txt distros-key-names.txt distros-key-vernums.txt distros-names.txt distros.txt

distros-vernums.txt distros-versions.txt


या आदेश प्रतिस्थापन:



#! / Bin / bash

# सबसे लंबा शब्द: किसी फ़ाइल में सबसे लंबी स्ट्रिंग ढूंढें जबकि [[ -n $1 ]]; करना

यदि [[ -r $1 ]]; फिर max_word= max_len=0

$(स्ट्रिंग्स $1) में i के लिए; do len=$(echo -n $i | wc -c)

अगर (( लेन > मैक्स_लेन )); फिर max_len=$len max_word=$i

fi

किया

इको "$1: '$max_word' ($max_len अक्षर)"

फाई शिफ्ट

किया

#! / Bin / bash

# सबसे लंबा शब्द: किसी फ़ाइल में सबसे लंबी स्ट्रिंग ढूंढें जबकि [[ -n $1 ]]; करना

यदि [[ -r $1 ]]; फिर max_word= max_len=0

$(स्ट्रिंग्स $1) में i के लिए; do len=$(echo -n $i | wc -c)

अगर (( लेन > मैक्स_लेन )); फिर max_len=$len max_word=$i

fi

किया

इको "$1: '$max_word' ($max_len अक्षर)"

फाई शिफ्ट

किया

के लिए: पारंपरिक शैल प्रपत्र


इस उदाहरण में, हम किसी फ़ाइल में पाई जाने वाली सबसे लंबी स्ट्रिंग की तलाश करते हैं। जब कमांड लाइन पर एक या अधिक फ़ाइल नाम दिए जाते हैं, तो यह प्रोग्राम इसका उपयोग करता है तार प्रत्येक फ़ाइल में पढ़ने योग्य पाठ "शब्दों" की एक सूची तैयार करने के लिए प्रोग्राम (जो जीएनयू बिनुटिल्स पैकेज में शामिल है)। एसटी लूप प्रत्येक शब्द को बारी-बारी से संसाधित करता है और निर्धारित करता है कि वर्तमान शब्द अब तक पाया गया सबसे लंबा शब्द है या नहीं। जब लूप समाप्त हो जाता है, तो सबसे लंबा शब्द प्रदर्शित होता है।

यदि वैकल्पिक in शब्द का हिस्सा एसटी आदेश छोड़ा गया है, एसटी स्थितीय मापदंडों को संसाधित करने में डिफ़ॉल्ट। हम अपना संशोधन करेंगे सबसे लंबा शब्द इस पद्धति का उपयोग करने के लिए स्क्रिप्ट:



#! / Bin / bash

# longest-word2: i के लिए फ़ाइल में सबसे लंबी स्ट्रिंग ढूंढें; करना

यदि [[ -r $i ]]; फिर max_word= max_len=0

$(स्ट्रिंग्स $i) में j के लिए; do len=$(echo -n $j | wc -c)

अगर (( लेन > मैक्स_लेन )); फिर max_len=$len max_word=$j

fi

किया

इको "$i: '$max_word' ($max_len अक्षर)"

फाई हो गया

#! / Bin / bash

# longest-word2: i के लिए फ़ाइल में सबसे लंबी स्ट्रिंग ढूंढें; करना

यदि [[ -r $i ]]; फिर max_word= max_len=0

$(स्ट्रिंग्स $i) में j के लिए; do len=$(echo -n $j | wc -c)

अगर (( लेन > मैक्स_लेन )); फिर max_len=$len max_word=$j

fi

किया

इको "$i: '$max_word' ($max_len अक्षर)"

फाई हो गया


की छवि

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


मैं क्यों?

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



की छवि

इस परंपरा का आधार फोरट्रान प्रोग्रामिंग भाषा से आता है। फॉर-ट्रान में, I, J, K, L और M अक्षरों से शुरू होने वाले अघोषित चर स्वचालित रूप से पूर्णांक के रूप में टाइप किए जाते हैं, जबकि किसी अन्य अक्षर से शुरू होने वाले चर वास्तविक (दशमलव अंशों वाली संख्याएं) के रूप में टाइप किए जाते हैं। इस व्यवहार ने प्रोग्रामर्स को लूप वेरिएबल्स के लिए वेरिएबल I, J, और K का उपयोग करने के लिए प्रेरित किया, क्योंकि अस्थायी वेरिएबल (जैसा कि लूप वेरिएबल्स अक्सर होते हैं) की आवश्यकता होने पर उनका उपयोग करना कम काम था।

इसने निम्नलिखित फोरट्रान-आधारित व्यंग्यवाद को भी जन्म दिया: "ईश्वर वास्तविक है, जब तक कि पूर्णांक घोषित न किया जाए।"


OnWorks पर शीर्ष OS क्लाउड कंप्यूटिंग: