सेट -ई क्या करता है?


28

मेरे पास एक स्क्रिप्ट है जो मुझे मिली और मैं इसे चलाने के लिए प्राप्त करने की कोशिश कर रहा हूं, यह सिर्फ अपाचे रनटाइम लाइब्रेरी को डाउनलोड और इंस्टॉल करता है। पहली पंक्ति है set -eऔर यह एक त्रुटि पैदा कर रहा है; क्या करता set -eहै?

जवाबों:


22

यह बिलिन इतनी जटिल है कि यह अपने स्वयं के खंड के योग्य है।

सेट आपको शेल विकल्पों के मूल्यों को बदलने और स्थितीय मापदंडों को सेट करने, या शेल चर के नाम और मूल्यों को प्रदर्शित करने की अनुमति देता है।

-eविकल्प

-e

यदि एक पाइपलाइन (पाइपलाइन देखें) से बाहर निकलें, जिसमें एकल सरल कमांड (साधारण कमांड देखें), कोष्ठक में संलग्न उपसमूह कमांड (कमांड ग्रुपिंग देखें), या कमांड से जुड़े कमांड के एक भाग के रूप में निष्पादित कमांड में से एक हो सकता है ब्रेसिज़ (कमांड ग्रुपिंग देखें) एक गैर-शून्य स्थिति देता है। शेल तब बाहर नहीं निकलता है जब वह कमांड विफल हो जाती है जो कमांड लिस्ट का कुछ समय बाद या जब तक कीवर्ड के अनुसार नहीं होता है, अगर एक स्टेटमेंट में टेस्ट का हिस्सा है, तो && या में निष्पादित किसी भी कमांड का हिस्सा || अंतिम && या; और किसी पाइपलाइन में किसी भी कमांड के बाद कमांड को छोड़कर, लेकिन अंतिम, या यदि कमांड की वापसी स्थिति के साथ उलटा किया जा रहा है! ईआरआर पर एक जाल, यदि सेट किया जाता है, तो शेल बाहर निकलने से पहले निष्पादित किया जाता है।

यह विकल्प शेल वातावरण और प्रत्येक सबस्क्रिप्शन वातावरण पर अलग से लागू होता है (कमांड एक्ज़ेक्यूशन एनवायरनमेंट देखें), और सब-सेलेबल्स को सब-कमांड में निष्पादित करने से पहले बाहर निकलने का कारण हो सकता है।

स्रोत: www.gnu.org

नीचे @ psusi की टिप्पणी के कारण संपादित किया गया।

इसके अतिरिक्त आप बैश के मैनुअल पेज को पढ़ सकते हैं

man bash 

अनुभाग में: शेल बिल्डिन कमैंट्स

या मुद्दा

help set 

एक छोटी मदद संदेश के लिए।


1
चूंकि यह एक अंतर्निहित कमांड है, आप चाहते हैं help setऔर फुल बैश मैनुअल है info bash, यदि आपके पास बैश-डॉक स्थापित है।
psusi

स्पष्टीकरण @psusi के लिए धन्यवाद। help setऔर / या के man bashलिए सही हैं set
NickTux

12

set -e संक्षेप में, जब यह आपकी बैश स्क्रिप्ट के शीर्ष पर होता है, तो स्क्रिप्ट को स्क्रिप्ट से किसी भी पंक्ति के बाहर निकलने के लिए कहता है जैसे ही स्क्रिप्ट में कुछ अपवाद (मैनुअल में सूचीबद्ध कुछ अपवादों के साथ) विफल हो जाते हैं।] [1]

डिबगिंग विकल्प के रूप में, इसका अक्सर उपयोग किया जाता है set -x, जिसे "+" चिह्न के साथ निष्पादन से पहले प्रत्येक विस्तारित कमांड लाइन को प्रिंट करना है। [२]

इस पर अधिक देखें:

[१] https://www.peterbe.com/plog/set-ex

[२] http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_02_03.html


2
सरल व्याख्या के लिए धन्यवाद। मैं अक्सर डॉकफाइल्स में सेट -xe देखता हूं और अब मुझे इसका कारण पता है :)
ymakux
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.