मैं एक स्क्रिप्ट के व्यवहार की जांच कर रहा हूं जो आम तौर पर एक स्वचालित प्रक्रिया (जैसे क्रोन, जेनकिंस) के रूप में चलाया जाता है। स्क्रिप्ट अंतत: (कमांड) आह्वान कर सकती है जो अंतःक्रियात्मक रूप से चलने पर अलग-अलग व्यवहार (उपयोगकर्ता इनपुट की मांग) करती है; उदाहरण के लिए, patch
पूछेंगे कि उलटे पैच के साथ क्या करना है, और svn
पासवर्ड के लिए पूछेंगे, लेकिन मुझे यह देखने की ज़रूरत है कि जब वे गैर-संवादात्मक रूप से चलते हैं तो क्या होता है।
राजी करना patch
कि यह गैर-संवादात्मक है काफी आसान है; मुझे बस stdout
एक गैर-ट्टी होने के लिए पुनर्निर्देशित करने की आवश्यकता है :
$ </dev/null > >(cat) /path/to/myscript --args
हालांकि svn
यह मौजूद होने पर कंट्रोलिंग टर्मिनल से जुड़ जाएगा; पास करने के लिए स्क्रिप्ट को संपादित करना --non-interactive
वास्तव में एक विकल्प नहीं है क्योंकि यह कई स्तरों से आ रहा है और यह मुश्किल है कि मैं हर आह्वान को पा सकता हूं।
वहाँ एक स्क्रिप्ट को नियंत्रित करने के लिए एक तरीका है / गैर-अंतःक्रियात्मक रूप से, एक नियंत्रित टर्मिनल के बिना (ताकि /dev/tty
यह मौजूद नहीं है)? मैं अभी भी अपने टर्मिनल पर जाने के लिए stdout / stderr पसंद करूंगा।
(मुझे प्रश्न रन स्क्रिप्ट एक गैर संवादात्मक शेल में मिला; लेकिन उस के उत्तर क्रोन और उपयोगकर्ता पर्यावरण के बीच मतभेदों पर चर्चा करते हैं; मैंने गैर-अन्तरक्रियाशीलता को छोड़कर सभी मतभेदों को पहले ही समाप्त कर दिया है।)