यह संक्षिप्त ट्यूटोरियल आपको अपने बैश/शैल स्क्रिप्ट से टाइप किए गए इनपुट के लिए उपयोगकर्ता को संकेत देना सिखाएगा। यह सीखना आसान है, करना आसान है, इसलिए इसे पढ़ें!
पढ़ें कमांड
शेल स्क्रिप्ट में उपयोगकर्ता इनपुट पढ़ने के लिए, उपयुक्त नाम का उपयोग करें पढ़ें आज्ञा। इसमें निम्नलिखित सिंटैक्स है:
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
स्क्रिप्ट एक नहीं . तक निष्पादित होगी प्राप्त होता है - और उपयोगकर्ता को कोई भी कार्रवाई करने के लिए प्रेरित करने के लिए आसानी से संशोधित किया जा सकता है।