Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> बाश प्रोग्रामिंग

बैश/शैल स्क्रिप्ट में उपयोगकर्ता इनपुट के लिए कैसे संकेत दें

यह संक्षिप्त ट्यूटोरियल आपको अपने बैश/शैल स्क्रिप्ट से टाइप किए गए इनपुट के लिए उपयोगकर्ता को संकेत देना सिखाएगा। यह सीखना आसान है, करना आसान है, इसलिए इसे पढ़ें!

पढ़ें कमांड

शेल स्क्रिप्ट में उपयोगकर्ता इनपुट पढ़ने के लिए, उपयुक्त नाम का उपयोग करें पढ़ें आज्ञा। इसमें निम्नलिखित सिंटैक्स है:

read OPTIONS VARIABLES

ध्यान दें कि:

  • पढ़ें आदेश मानक इनपुट . से एक पंक्ति पढ़ेगा और उस इनपुट को फ़ील्ड में विभाजित करें
    • आमतौर पर, मानक इनपुट आपके कीबोर्ड से इनपुट वाला टर्मिनल है, लेकिन आप इनपुट को पढ़ने पर भी पाइप या रीडायरेक्ट कर सकते हैं आदेश
    • उपयोगकर्ताओं के दृष्टिकोण से, उन्हें संकेत दिया जाएगा और ENTER कुंजी दबाकर कुछ दर्ज करना होगा
  • विकल्प नीचे दी गई तालिका से विकल्प फ़्लैग की एक सूची होनी चाहिए जो पढ़ने . के व्यवहार को संशोधित करेगी आदेश
  • वैरिएबल मानों की एक सूची है जो रिक्त स्थान से अलग की गई स्क्रिप्ट को पास की जाएगी
    • यदि -p विकल्प का उपयोग किया जाता है, आप उपयोगकर्ता को यह बताने के लिए कि उन्हें क्या दर्ज करना चाहिए, यह बताने के लिए आप इसे संकेतों की एक मिलान सूची के साथ जोड़ सकते हैं
    • एकाधिक के रूप में वैरिएबल रिक्त स्थान से अलग किया जा सकता है, कोई भी मूल्य जिसे आप इनपुट करना चाहते हैं, जिसमें रिक्त स्थान या अन्य विशेष वर्ण शामिल हैं, को उद्धृत किया जाना चाहिए
पढ़ें आम तौर पर इस्तेमाल किए जाने वाले विकल्प
-एक सरणी शून्य से शुरू होकर, सरणी चर ARRAY के अनुक्रमिक सूचकांकों में पढ़े गए शब्दों को असाइन करें
-p प्रॉम्प्ट पढ़ने का प्रयास करने से पहले स्ट्रिंग PROMPT को पिछली नई लाइन के बिना आउटपुट करें
-r बैकस्लैश को किसी भी वर्ण से बचने की अनुमति न दें
-s टर्मिनल से आने वाले इनपुट की प्रतिध्वनि न करें
-t टाइमआउट यदि TIMEOUT सेकंड के भीतर इनपुट की पूरी लाइन नहीं पढ़ी जाती है, तो टाइम आउट और वापसी विफलता

हमेशा की तरह, आप पढ़ने . के लिए उपयोगकर्ता पुस्तिका प्राप्त कर सकते हैं कमांड, उपलब्ध विकल्पों की पूरी सूची सहित, चलाकर:

man read

रीड कमांड का उपयोग करके इनपुट के लिए संकेत करना

यहां पढ़ें . का उपयोग करने के कुछ उदाहरण दिए गए हैं बैश/शैल स्क्रिप्ट में उपयोगकर्ता इनपुट स्वीकार करने का आदेश।

लेकिन पहले...

Linux शेल स्क्रिप्ट में '#!' क्या है?

बस इनपुट मिल रहा है

यह कमांड का सबसे सरल उपयोग है - बस इनपुट से एक मान पढ़ना:

#!/bin/bash

read word
echo You just typed $word

ऊपर, इनपुट को $word . नामक वैरिएबल में पढ़ा जाता है , और फिर इको . का उपयोग करके प्रदर्शित किया जाता है आज्ञा। फिर से, कोई संकेत नहीं होगा - स्क्रीन रुक जाएगी और उपयोगकर्ता के कुछ टाइप करने की प्रतीक्षा करेगी, उसके बाद ENTER कुंजी - फिर दिए गए इनपुट के साथ स्क्रिप्ट फिर से शुरू हो जाएगी।

एकाधिक इनपुट मान प्राप्त करने के लिए, रिक्त स्थान द्वारा अलग किए गए कमांड में और चर जोड़ें:

#!/bin/bash

read word1 word2
echo You just typed $word1 followed by $word2

संदेश के साथ इनपुट के लिए संकेत करना

इनपुट के लिए प्रतीक्षा करने के लिए स्क्रीन को रोकना वास्तव में उपयोगकर्ता के अनुकूल नहीं है। आमतौर पर, आप उपयोगकर्ता को बताना चाहेंगे कि वे क्या दर्ज करने वाले हैं - उदाहरण के लिए एक उपयोगकर्ता नाम या पासवर्ड। यह अगला उदाहरण बस यही करता है:

#!/bin/bash

read -p 'Username: ' username
read -sp 'Password: ' password
echo Your username is $username, we will not display your password

ऊपर, -p विकल्प का उपयोग एक संकेत प्रदर्शित करने के लिए किया जाता है - एक संदेश प्रदर्शित होता है जो उपयोगकर्ता को बताता है कि उन्हें प्रत्येक चर के मूल्य के लिए क्या इनपुट करना चाहिए।

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

एक संदेश के साथ एक से अधिक इनपुट के लिए संकेत करना

आप संकेत दे सकते हैं और फिर कई मान पढ़ सकते हैं:

#!/bin/bash

read -p 'Please type your first and last name: ' first last
echo Your name is $first $last
है

हां/नहीं के लिए संकेत करना

यहां बताया गया है कि लूप के दौरान . का उपयोग करके उपयोगकर्ता से एक सरल हां/नहीं प्रश्न कैसे पूछा जाए और एक केस स्टेटमेंट . y . से शुरू होने वाली कोई भी स्ट्रिंग या वाई हां . के रूप में व्याख्या की जाएगी *, n . से शुरू होने वाली कोई भी स्ट्रिंग या एक N नहीं . के रूप में व्याख्या की जाएगी :

#!/bin/bash
while true; do
    read -p "Do you wish to perform this action?" yesno
    case $yesno in
        [Yy]* ) 
            echo "You answered yes"
        ;;
        [Nn]* ) 
            echo "You answered no, exiting"
            exit
        ;;
        * ) echo "Answer either yes or no!";;
    esac
done

स्क्रिप्ट एक नहीं . तक निष्पादित होगी प्राप्त होता है - और उपयोगकर्ता को कोई भी कार्रवाई करने के लिए प्रेरित करने के लिए आसानी से संशोधित किया जा सकता है।


  1. विम में शैल स्क्रिप्ट के लिए कस्टम हेडर टेम्पलेट कैसे बनाएं?

    इस लेख में, हम आपको विम संपादक में सभी नई बनाई गई बैश स्क्रिप्ट के लिए कस्टम हेडर को कॉन्फ़िगर करने का एक आसान तरीका दिखाएंगे। इसका मतलब है कि हर बार जब आप एक नया .sh खोलते हैं vi/vim संपादक का उपयोग कर फ़ाइल, कस्टम हेडर स्वचालित रूप से फ़ाइल में जोड़ दिया जाएगा। कस्टम बैश स्क्रिप्ट हेडर टेम्प्लेट फ

  1. विंडोज 10 [ट्यूटोरियल] पर बैश (लिनक्स शेल) को कैसे स्थापित और उपयोग करें

    यहां बताया गया है कि विंडोज़ पर लिनक्स शेल को कैसे सेट अप करें और उसका उपयोग कैसे करें - लिनक्स के लिए विंडोज सबसिस्टम का उपयोग करके (WSL )। यह ट्यूटोरियल 2020 से विंडोज 10 के अप-टू-डेट वर्जन के लिए है। मैं विंडोज 10 के पुराने संस्करणों या विंडोज 8/7/XP/3.1 के अन्य तरीकों पर WSL का उपयोग करने के त

  1. विंडोज 10 पर लिनक्स बैश शेल कैसे स्थापित करें

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