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

कंडीशनिंग का उपयोग करना

यदि आपको पिछली बार लिखी गई स्क्रिप्ट याद है, तो यह कमांड की एक श्रृंखला चलाती है जिसने पांडोक का इस्तेमाल मार्कडाउन दस्तावेज़ के चार संस्करणों (एचटीएमएल, डॉक्क्स, ओडीटी और ईपीब में) के चार संस्करणों को उत्पन्न करने के लिए किया था। लेकिन यह सब कुछ या कुछ भी नहीं था ... या तो हम एक समय में उन्हें बनाने के लिए पांडोक का इस्तेमाल करते थे, या अन्य सभी। क्या होगा यदि हम चुनना और चुनना चाहते थे?

यह कंडीशनल का उपयोग करना आसान है, जो मूल रूप से " यदि एक्स है, तो यह करें " कथन। आइए स्क्रिप्ट को देखें क्योंकि हमारे पास यह था:

 #! / bin / bash pandoc -r markdown -w html -o $ 1.html $ 1 && pandoc -r markdown -w docx -o $ 1.docx $ 1 && pandoc -r markdown -w odt -o $ 1.odt $ 1 && pandoc - आर markdown -w epub -o $ 1.epub $ 1 

मान लीजिए कि हम उपरोक्त वस्तुओं में से एक को कमांड लाइन पर चुनने में सक्षम होना चाहते हैं, या उन सभी को करना चाहते हैं। इस तरह pandoc-pub.sh स्क्रिप्ट के लिए एक त्वरित संशोधन केवल यह पूरा करेगा:

 #! / bin / bash file = $ 1 export = $ 2 अगर ["$ export" == "html"] तो pandoc -r markdown -w html -o $ file.html $ file elif ["$ export" == "docx "] फिर pandoc -r markdown -w docx -o $ file.docx $ file elif [" $ export "==" odt "] फिर pandoc -r markdown -w odt -o $ file.odt $ file elif [" $ निर्यात "==" epub "] फिर pandoc -r markdown -w epub -o $ file.epub $ फ़ाइल fi 

पहली बात यह है कि हमने कमांड लाइन नामों से दो चर को देना है: फ़ाइल (जो मार्कडाउन स्रोत फ़ाइल है), और निर्यात (जो प्रारूप हम निर्यात करना चाहते हैं। तो अब हम चुन सकते हैं और चुन सकते हैं हम इसका उपयोग करके उत्पन्न करना चाहते हैं:

 pandoc-pub.sh [फ़ाइल जिसे आप कनवर्ट करना चाहते हैं] .md [या तो "html, " "docx, " "odt, " या "epub" में से एक] 

लेकिन पूरे शेबांग के बारे में क्या? हम आखिरी बार ऐसा कर सकते थे, लेकिन अब नहीं? खैर, अगर हम थोड़ा आगे सोचते हैं, तो हमें ऐसे मामले के लिए जिम्मेदार होना चाहिए जहां हम (या कोई अन्य उपयोगकर्ता) ऊपर दिए गए चार विकल्पों के अलावा कुछ दर्ज करता है - इस मामले में, सब कुछ निर्यात क्यों नहीं करते? निम्नानुसार कोड का एक और बिट जोड़ें:

 #! / bin / bash file = $ 1 export = $ 2 अगर ["$ export" == "html"] तो pandoc -r markdown -w html -o $ file.html $ file elif ["$ export" == "docx "] फिर pandoc -r markdown -w docx -o $ file.docx $ file elif [" $ export "==" odt "] फिर pandoc -r markdown -w odt -o $ file.odt $ file elif [" $ निर्यात "==" epub "] फिर pandoc -r markdown -w epub -o $ file.epub $ फ़ाइल अन्य pandoc -r markdown -w html -o $ file.html $ file && pandoc -r markdown -w docx -o $ file.docx $ फ़ाइल && pandoc -r markdown -w odt -o $ file.odt $ फ़ाइल && pandoc -r markdown -w epub -o $ file.epub $ file fi 

अब, अगर हम कमांड लाइन (या गलत चीज़) पर फ़ाइल नाम के बाद कुछ भी नहीं डालते हैं, तो यह स्क्रिप्ट सिर्फ सुरक्षित चीज़ करेगी और सभी प्रारूपों को उत्पन्न करेगी।

एक जीयूआई जोड़ना

लेकिन क्या होगा यदि, इस आखिरी मामले में, आप नहीं चाहते हैं कि यह सबकुछ उत्पन्न करे, लेकिन कुछ और मददगार हो। हम एक और जोड़ सकते हैं

 elif 

कमांड लाइन पर "सभी" दर्ज किए जाने पर सभी प्रारूपों को उत्पन्न करने के लिए कथन, और कुछ सहायता टेक्स्ट मुद्रित करने के लिए कथन को बदलें:

 #! / bin / bash file = $ 1 export = $ 2 अगर ["$ export" == "html"] तो pandoc -r markdown -w html -o $ file.html $ file elif ["$ export" == "docx "] फिर pandoc -r markdown -w docx -o $ file.docx $ file elif [" $ export "==" odt "] फिर pandoc -r markdown -w odt -o $ file.odt $ file elif [" $ निर्यात "==" epub "] फिर pandoc -r markdown -w epub -o $ file.epub $ file elif [" $ export "==" all "] फिर pandoc -r markdown -w html -o $ file.html $ फ़ाइल && pandoc -r markdown -w docx -o $ file.docx $ फ़ाइल && pandoc -r markdown -w odt -o $ file.odt $ फ़ाइल && pandoc -r markdown -w epub -o $ file.epub $ फ़ाइल अन्यथा गूंजें "कृपया फ़ाइल नाम के बाद निम्न विकल्पों में से एक जोड़ें: एचटीएमएल, ओडीटी, डॉक्क्स, एपब, या सब कुछ।" फाई 

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

 sudo apt-zenity स्थापित करें 

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

 #! / bin / bash zenity --list --checklist --title = "पांडोक प्रकाशक" --column = "" --column = "निर्यात प्रारूप" गलत "एचटीएमएल" गलत "odt" गलत "docx" गलत "epub " 

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

 #! / बिन / बैश विकल्प = $ (जेनिटी --लिस्ट - चेकलिस्ट - शीर्षक = "पांडोक प्रकाशक" --column = "" --column = "निर्यात प्रारूप" गलत "एचटीएमएल" गलत "odt" गलत "docx "गलत" एपब "); 

अब हमारे पास एक वेरिएबल "$ विकल्प" है जिसमें चयनित सभी विकल्पों में एक सूची (डिफ़ॉल्ट रूप से "|" द्वारा अलग) शामिल है। हमें यह देखने के लिए जांच करनी होगी कि क्या उस सूची में कोई भी प्रारूप शामिल है जिसे हम "==" के बजाय "= ~" का उपयोग करके संभालने की योजना बना रहे हैं (यह देखने के लिए जांच करता है कि इसमें कुछ और है, इस मामले में) ... के लिए उदाहरण:

 अगर [[$ विकल्प = ~ "एचटीएमएल"]] 

अंत में, जब कोई प्रारूप प्रदान नहीं किया जाता है, तो स्क्रिप्ट का एक त्वरित संशोधन इस संवाद को दिखाएगा, फिर उचित पांडोक कमांड चलाएं जब उस विकल्प को संवाद में चेक किया गया हो:

 #! / bin / bash file = $ 1 export = $ 2 अगर ["$ export" == "html"] तो pandoc -r markdown -w html -o $ file.html $ file elif ["$ export" == "docx "] फिर pandoc -r markdown -w docx -o $ file.docx $ file elif [" $ export "==" odt "] फिर pandoc -r markdown -w odt -o $ file.odt $ file elif [" $ निर्यात "==" epub "] फिर pandoc -r markdown -w epub -o $ file.epub $ file elif [" $ export "==" all "] फिर pandoc -r markdown -w html -o $ file.html $ फ़ाइल && pandoc -r markdown -w docx -o $ file.docx $ फ़ाइल && pandoc -r markdown -w odt -o $ file.odt $ फ़ाइल && pandoc -r markdown -w epub -o $ file.epub $ फ़ाइल अन्य विकल्प = $ (जेनिटी --लिस्ट - चेकलिस्ट - शीर्षक = "पांडोक प्रकाशक" --column = "" --column = "निर्यात प्रारूप" गलत "एचटीएमएल" गलत "ओडीटी" गलत "docx" गलत "epub" ); अगर [[$ विकल्प = ~ "एचटीएमएल"]] तो pandoc -r markdown -w html -o $ file.html $ फ़ाइल; fi अगर [[$ विकल्प = ~ "odt"]] तो pandoc -r markdown -w docx -o $ file.docx $ फ़ाइल; fi अगर [[$ विकल्प = ~ "docx"]] तो pandoc -r markdown -w odt -o $ file.odt $ फ़ाइल; fi अगर [[$ विकल्प = ~ "epub"]] तो pandoc -r markdown -w epub -o $ file.epub $ फ़ाइल; फाई 

बस इसी तरह, जीयूआई और कमांड लाइन विकल्पों के साथ एक व्यक्तिगत आवेदन।