एक कमांड के सवालों के जवाब तैयार करें


14

मान लीजिए कि मैं एक शेल स्क्रिप्ट लिखना चाहता हूं जो सिर्फ एक कमांड निष्पादित करता है। लेकिन यह कमांड खराब तरीके से डिजाइन की गई है। यह कोई कमांड लाइन विकल्प प्रदान नहीं करता है; इसके बजाय यह कुछ प्रश्न पूछता है और उपयोगकर्ता इनपुट की प्रतीक्षा करता है।

क्या स्क्रिप्ट में इस इनपुट को तैयार करने का कोई तरीका है, इसलिए सवालों के जवाब अपने आप मिल जाते हैं?

जवाबों:


16

यदि कमांड बहुत अधिक उपयुक्त नहीं है तो उसे इस तरह से काम करना चाहिए:

command > /dev/null << EOF
<answer 1>
<answer 2>
<answer 3>
EOF

इसके लिए आवश्यक है कि आप पहले से सटीक उत्तर जान लें।


रैपिंग स्क्रिप्ट डिजाइन करने के लिए आप उपरोक्त उत्तर का उपयोग कर सकते हैं। नई स्क्रिप्ट को मापदंडों को सुनना चाहिए और ऊपर की विधि के साथ पुरानी कमांड को कॉल करना चाहिए।
वाल्टर ए

HERE दस्तावेज़ के रूप में भी जाना जाता है, अधिक जानकारी के लिए आप यहाँ विकिपीडिया दस्तावेज़ परिभाषा की
OldTimer

15

उम्मीद वही कर सकती है। उम्मीद वेबसाइट से :

उम्मीद है कि इस तरह के टेलनेट, ftp, passwd, fsck, rlogin, टिप, आदि के रूप में इंटरैक्टिव अनुप्रयोगों को स्वचालित करने के लिए एक उपकरण है। उम्मीद है कि वास्तव में इस सामान को तुच्छ बनाता है। इन समान अनुप्रयोगों के परीक्षण के लिए उम्मीद भी उपयोगी है [...] "

यह बहुत मदद के साथ आता है, जैसे कि ऑटोएक्सपेक्ट

उम्मीद वेबसाइट से फिर,

ऑटोफ़ेक्ट आपको दूसरे प्रोग्राम के साथ इंटरैक्ट करते हुए देखता है और एक एक्सपेक्ट स्क्रिप्ट बनाता है जो आपके इंटरैक्शन को पुन: पेश करता है। स्ट्रेटलाइन स्क्रिप्ट के लिए, ऑटोएक्सपेक्ट हाथ से स्क्रिप्ट लिखने में पर्याप्त समय बचाता है।


आपके उत्तर के लिए धन्यवाद। चूंकि मेरी ज़रूरतें बहुत कम हैं, एक्सपेक्ट मेरे मामले में ओवरकिल है। Bjorns जवाब पूरी तरह से मेरी जरूरतों के अनुरूप है। लेकिन मैं दूसरों के लिए अपना जवाब रखने का सुझाव दूंगा जो एक अधिक जटिल समाधान की आवश्यकता है।
tmuecksch

+1 क्योंकि मुझे नहीं पता था कि ऑटोफ़ेक्ट मौजूद था और यह पता लगा लिया था कि मेरे साथ सीखने के लिए अपेक्षित सीखने की अवस्था बहुत ज्यादा खड़ी थी। मैं एक और नज़र डालूंगा।
जो

7

यदि आपकी स्क्रिप्ट को एक उत्तर दिए जाने की उम्मीद है, या कई संकेत दिए गए हैं, जिसमें आप एक ही उत्तर दे सकते हैं yes:

NAME
       yes - output a string repeatedly until killed

SYNOPSIS
       yes [STRING]...
       yes OPTION

DESCRIPTION
       Repeatedly output a line with all specified STRING(s), or `y'.

इसे इस तरह उपयोग करें:

yes Me | give_a_hug.sh

3
एक सामान्य हालांकि विडंबनापूर्ण उपयोग है yes n, उदाहरण के लिए:yes n | mv -i * somewhere/
सैम वाटकिंस
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.