"सेट-ई" के प्रभाव को पूर्ववत करने के लिए कैसे करें जो किसी भी कमांड के विफल होने पर तुरंत बाहर निकलने से रोकता है?


205

set -eएक इंटरैक्टिव बैश शेल में प्रवेश करने के बाद , यदि कोई भी कमांड गैर-शून्य के साथ बाहर निकलता है, तो बैश तुरंत बाहर निकल जाएगा। मैं इस प्रभाव को कैसे पूर्ववत कर सकता हूं?

जवाबों:


309

के साथ set +e। हाँ, यह पिछड़ा हुआ है कि आप शेल विकल्पों को सक्षम करते हैं set -और उन्हें अक्षम करते हैं set +। ऐतिहासिक किशमिश, डोनचौ।


बहुत बहुत धन्यवाद, यह इसी मैनुअल पेज ( faqs.org/docs/bashman/bashref_56.html ) की अंतिम पंक्तियों में से एक है जिसे मैंने अंत तक नहीं पढ़ा।
तियानिई कुई

बैश मैनुअल बहुत बड़ा है, यह सच है। (FYI करें, क्योंकि आप नए प्रतीत होते हैं: यह आपके प्रश्न के सर्वश्रेष्ठ उत्तर के तहत चेक मार्क पर क्लिक करने के लिए किया गया काम है, इसे "स्वीकार करना" कहा जाता है।)
zwol

12
अफसोस की बात है, यूनिक्स खोल भाषा (जिनमें से अधिकांश 'बैश' के लिए विशिष्ट नहीं है) आज भी व्यापक रूप से कम से कम आंतरिक रूप से सुसंगत प्रोग्रामिंग भाषाओं में से एक है। आप इन छोटे मौसा के बहुत अधिक जानने के लिए जा रहे हैं। और मैं कहूंगा कि एक दस्तावेज बग है, वहां।
zwol

10
ऐतिहासिक अंगूर किशमिश नरक हैं!
जेम्स

2
अंत में, बैश का एक अनुचित कोलाहल: एकल डैश मानक POSIX शेल कमांड लाइन विकल्प है, और इसलिए "कुछ करें" के लिए सबसे स्वाभाविक है। +जैसा है, -लेकिन किसी चीज़ को पार करने का अर्थ है "नहीं" जैसा कि "over" में है।
सिरो सेंटिल्ली 郝海东 i i i 法轮功 '

68

यह उपयोग करने के लिए असुविधाजनक हो सकता है set +e/ set -eहर बार जब आप इसे ओवरराइड करना चाहते हैं। मुझे एक सरल समाधान मिला।

इस तरह से करने के बजाय:

set +e
command_that_might_fail_but_we_want_to_ignore_it
set -e

आप इसे इस तरह से कर सकते हैं:

command_that_might_fail_but_we_want_to_ignore_it || true

या, यदि आप कीस्ट्रोक्स को बचाना चाहते हैं और थोड़ा गुप्त रहने का मन नहीं करते हैं:

command_that_might_fail_but_we_want_to_ignore_it || :

उम्मीद है की यह मदद करेगा!


11
के इतिहास के बारे में सोच रहा था :, और किसी और के उत्सुक होने की स्थिति में मुझे यहाँ अपना उत्तर मिला ।
शेवसेल

4
यह तभी लागू होता है जब आप अपने द्वारा चलाए जा रहे कमांड के रिटर्न कोड की परवाह नहीं करते हैं।
आइजैक

20
  • के बजाय + का उपयोग करना - इन झंडों को बंद करने का कारण बनता है।

स्रोत

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.