कीप्रेस के लिए बैश प्रतीक्षा करें

Bash Wait Keypress



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

उदाहरण 1:

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







#!/बिन/बैश
फेंक दिया 'जारी रखने के लिए कोई भी कुंजी दबाएँ'
जबकि [ सच ];करना
पढ़ना -टी 3 -एन 1
अगर [ $?=0 ];फिर
बाहर जाएं;
अन्यथा
फेंक दिया 'कुंजीपटल की प्रतीक्षा कर रहा है'
होना
किया हुआ

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



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

आउटपुट:







उदाहरण # 2:

निम्न स्क्रिप्ट के साथ एक बैश फ़ाइल बनाएँ। इस उदाहरण में एक अनंत समय लूप का उपयोग किया जाता है जो उपयोगकर्ता द्वारा 'q' दबाए जाने पर समाप्त हो जाएगा। यदि उपयोगकर्ता 'q' के बिना कोई कुंजी दबाता है तो काउंटर वेरिएबल का मान 1 से बढ़ा दिया जाएगा और मान प्रिंट कर लिया जाएगा।

#!/बिन/बैश
फेंक दिया बाहर निकलने के लिए 'क्यू' दबाएं
गिनती=0
जबकि:;करना
पढ़ना -एन 1प्रति<&1
अगर [[ $ k= क्यू]];फिर
printf 'एनकार्यक्रम से बाहर निकलनाएन'
टूटना
अन्यथा
((गिनती=$गिनती+1))
printf 'एनके लिए पुनरावृति$गिनतीबारएन'
फेंक दिया बाहर निकलने के लिए 'क्यू' दबाएं
होना
किया हुआ

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



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

आउटपुट:

उदाहरण#3:

निम्नलिखित स्क्रिप्ट के साथ एक बैश फ़ाइल बनाएं जो उपयोगकर्ता द्वारा दबाए गए कुंजी के आधार पर विभिन्न प्रकार के कार्य करेगी। यदि उपयोगकर्ता '1' दबाता है तो यह दो कमांड लाइन तर्क और प्रिंट जोड़ देगा। यदि उपयोगकर्ता '2' दबाता है तो यह दो कमांड लाइन तर्कों को घटाएगा और प्रिंट करेगा। जब तक उपयोगकर्ता '3' दबाता है तब तक स्क्रिप्ट लगातार चलती रहेगी।

#!/बिन/बैश
v1=$ 1
वी 2=$ 2
जबकि:
करना
फेंक दिया '1. योग'
फेंक दिया '2. घटाव'
फेंक दिया '3. छोड़ना'
फेंक दिया -एन 'टाइप 1 या 2 या 3:'
पढ़ना -एन 1 -टी पंद्रहप्रति
printf 'एन'
मामला $ ए में
1* ) फेंक दिया '$v1+$v2=$(($v1+$v2))';;

2* ) फेंक दिया '$v1-$v2=$(($v1-$v2))';;

3* ) बाहर जाएं 0;;


* ) फेंक दिया 'पुनः प्रयास करें।';;
esac
किया हुआ

स्क्रिप्ट को दो संख्यात्मक तर्क मानों के साथ चलाएँ।

$दे घुमा केkey3.sh35 पंद्रह

आउटपुट:

उदाहरण # 4:

निम्न स्क्रिप्ट के साथ एक बैश फ़ाइल बनाएँ। जब उपयोगकर्ता ESC कुंजी दबाएगा तो स्क्रिप्ट समाप्त हो जाएगी। यह स्क्रिप्ट उपयोगकर्ता द्वारा दबाए गए कुंजियों को तब तक प्रिंट करेगी जब तक कि ESC कुंजी दबाया न जाए।

#!/बिन/बैश
उपयोगकर्ता का निवेश=''
फेंक दिया 'छोड़ने के लिए ESC कुंजी दबाएं'
# एक ही अक्षर पढ़ें
जबकि पढ़ना -आर -n1चाभी
करना
# अगर इनपुट == ईएससी कुंजी
अगर [[ $कुंजी== $'और' ]];
फिर
टूटना;
होना
# वेरिएबल में कुंजी जोड़ें जिसे उपयोगकर्ता द्वारा दबाया जाता है।
उपयोगकर्ता इनपुट+=$कुंजी
किया हुआ
printf 'एनआपने टाइप किया है:$userinputएन'

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

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

आउटपुट:

उदाहरण #5:

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

#!/बिन/बैश
फेंक दिया 'वह सर्वर पता दर्ज करें जिसे आप पिंग करना चाहते हैं'
पढ़नासर्वर
जबकि ! गुनगुनाहट -सी 1 -एन -में 2 $सर्वर
करना
फेंक दिया 'से जुड़ने की कोशिश'$सर्वर'
फेंक दिया 'समाप्त करने के लिए [ENTER] दबाएं'
पढ़ना -एस -एन 1 -टी 1चाभी
अगर [[ $कुंजी== $' x0a' ]];# अगर इनपुट == कुंजी दर्ज करें
फिर
बाहर जाएं 0
होना
किया हुआ
printf '%एसएन' '$सर्वरदौड रहा है'

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

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

आउटपुट:

निष्कर्ष:

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