चर के लिए BASH कमांड आउटपुट

Bash Command Output Variable

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

चर= $(आदेश)
चर= $(आदेश [विकल्प…]तर्क1 तर्क2...)
चर= $(/पथ/प्रति/आदेश)

या







चर=``आदेश``
चर=``आदेश [विकल्प…]तर्क1 तर्क2...``
चर=`/पथ/प्रति/आदेश``

***नोट: उपरोक्त आदेशों का उपयोग करते समय समान चिह्न से पहले और बाद में किसी स्थान का उपयोग न करें।



एक चर के लिए एकल कमांड आउटपुट

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



उदाहरण 1:

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





$आज की तारीख= $(दिनांक)
$फेंक दिया 'आज है$current_date'

आउटपुट:



उदाहरण # 2:

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

$current_dir=``लोक निर्माण विभाग``
$फेंक दिया 'वर्तमान निर्देशिका है:$ current_dir'

आउटपुट:

विकल्प और तर्क के साथ कमांड

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

उदाहरण#3:

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

फल.txt
आम
संतरा
केला
अंगूर
अमरूद
सेब

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

$गिनती_शब्द=``स्वागत -मेंफल.txt``
$फेंक दिया 'फलों में कुल शब्द। txt is$count_words'

आउटपुट:

उदाहरण # 4:

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

कार्यदिवस.txt

सोमवार
मंगलवार
बुधवार
गुरूवार
शुक्रवार
शनिवार
रविवार का दिन

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

cmdsub1.sh

#!/बिन/बैश
फ़ाइल का नाम='सप्ताह का दिन.txt'
जबकि पढ़नारेखा;करना
दिन=``फेंक दिया $लाइन | कट गया -सी 1-3``
अगर [ $दिन=='रवि' ]
फिर
फेंक दिया 'रविवार को छुट्टी है'
अन्यथा
फेंक दिया $दिन
होना
किया हुआ<$फ़ाइलनाम

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

$बिल्लीकार्यदिवस.txt
$दे घुमा केcmdsub1.sh

आउटपुट:

लूप में कमांड प्रतिस्थापन का उपयोग करना

आप कमांड प्रतिस्थापन के आउटपुट को किसी भी लूप वेरिएबल में स्टोर कर सकते हैं जो अगले उदाहरण में दिखाया गया है।

उदाहरण #5:

नाम की एक फाइल बनाएं cmdsub2.sh निम्नलिखित कोड के साथ। यहाँ, ` एलएस -डी * / वर्तमान निर्देशिका से सभी निर्देशिका सूची को पुनः प्राप्त करने के लिए कमांड का उपयोग किया जाता है। लूप के लिए आउटपुट से प्रत्येक निर्देशिका को पढ़ने और इसे चर में संग्रहीत करने के लिए यहां उपयोग किया जाता है $dirname जिसे बाद में छापा जाता है।

cmdsub2.sh

#!/बिन/बैश
के लिये दिरनाम में$(रास -डी * /)
करना
फेंक दिया '$dirname'
किया हुआ

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

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

आउटपुट:

नेस्टेड कमांड का उपयोग करना

आप पाइप (|) का उपयोग करके कई कमांड का उपयोग कैसे कर सकते हैं, यह पिछले उदाहरण में दिखाया गया है। लेकिन आप कमांड प्रतिस्थापन में नेस्टेड कमांड का उपयोग कर सकते हैं जहां पहली कमांड का आउटपुट दूसरे कमांड के आउटपुट पर निर्भर करता है और यह पाइप (|) कमांड के विपरीत काम करता है।

नेस्टेड कमांड सिंटैक्स:

कहां=``कमांड1 ``आदेश``

उदाहरण # 6:

दो आदेश, ` फेंक दिया ` और ` who ` इस उदाहरण में नेस्टेड कमांड के रूप में उपयोग किया जाता है। यहाँ, ` who `कमांड पहले निष्पादित होगा जो वर्तमान में लॉग इन उपयोगकर्ता की उपयोगकर्ता की जानकारी प्रिंट करता है। ` . का उत्पादन who `आदेश ` . द्वारा निष्पादित होगा फेंक दिया `कमांड और ` . का आउटपुट फेंक दिया `चर में स्टोर होगा $ var . यहाँ, ` . का उत्पादन फेंक दिया `कमांड ` . के आउटपुट पर निर्भर करता है who `आदेश।

$कहां=``फेंक दिया``who``
$फेंक दिया $ var

आउटपुट:

कमांड पथ का उपयोग करना

यदि आप कमांड का पथ जानते हैं तो आप कमांड प्रतिस्थापन का उपयोग करते समय कमांड पथ निर्दिष्ट करके कमांड चला सकते हैं। निम्न उदाहरण कमांड पथ के उपयोग को दर्शाता है।

उदाहरण # 7:

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

$उत्पादन= $(/usr/पूर्वाह्न/मैं कौन हूं)
$फेंक दिया $आउटपुट

आउटपुट:

कमांड लाइन तर्क का उपयोग करना

आप कमांड लाइन तर्क का उपयोग कमांड के साथ कमांड प्रतिस्थापन में तर्क के रूप में कर सकते हैं।

उदाहरण # 8:

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

#!/बिन/बैश
फ़ाइल का नाम=``बेसनाम $ 1``
फेंक दिया 'फ़ाइल का नाम है$फ़ाइलनाम। '

निम्न तर्क मान के साथ स्क्रिप्ट चलाएँ।

$दे घुमा केcmdsub3.sh डेस्कटॉप/अस्थायी/hello.txt

यहां, आधारनाम पथ का, डेस्कटॉप/अस्थायी/hello.txt है ' hello.txt '। तो, का मान $फ़ाइलनाम होगा hello.txt .

आउटपुट:

निष्कर्ष:

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

वीडियो में अधिक जानकारी: