बैश: एक निष्पादन योग्य एक अच्छा निकास स्थिति दे


32

मैं लिनक्स में एक निष्पादन योग्य चलाना चाहता हूं, और बाहर निकलने की स्थिति की परवाह किए बिना कि यह वापस आ जाता है, मैं एक अच्छा निकास स्थिति लौटना चाहता हूं। (अर्थात कोई त्रुटि नहीं।)

(यह इसलिए है क्योंकि मैं उपयोग कर रहा हूं sh -exऔर मैं चाहता हूं कि स्क्रिप्ट चलती रहे भले ही एक (विशिष्ट) कमांड विफल हो जाए।)

जवाबों:


47

इसे आजमाइए:

command || true

से man bash:

शेल उस समय से बाहर नहीं निकलता है जब वह कमांड विफल हो जाता है जो कमांड लिस्ट का हिस्सा होता है, जो कुछ समय बाद या कीवर्ड के तुरंत बाद होता है, अगर या एलिफ आरक्षित शब्दों के बाद टेस्ट का हिस्सा ए एंड& या except लिस्ट में निष्पादित किसी कमांड का हिस्सा होता है, सिवाय अंतिम && या ⎪⎪ के बाद कमांड, एक पाइप लाइन में कोई भी कमांड, लेकिन अंतिम, या यदि कमांड का रिटर्न वैल्यू उलटा हो रहा है!


यह भी एक अच्छा :)
voretaq7

1

कोशिश करो (executable ; exit 0), या वैकल्पिक रूप से इसे एक शेल स्क्रिप्ट में लपेटो जो हमेशा 0 से बाहर निकलता है।


1
यह अधिकांश मामलों के लिए ठीक काम करता है, लेकिन यह एक उपधारा सेट करता है यदि, उदाहरण के लिए, (cd foo; exit 0)सफल है, तो आप बाद में "फू" में समाप्त नहीं होंगे, क्योंकि आपका सीडब्ल्यूडी आपके पास पहले से था। हालांकि, cd foo || trueयह सफल होने पर आपको "फू" में छोड़ देगा।
अगली सूचना तक रोक दिया गया।

अच्छा बिंदु - यदि आपकी प्रक्रिया में अतिरिक्त दुष्प्रभाव हैं (वातावरण चर, निर्देशिकाओं को बदलना आदि) तो यह कारगर नहीं होगा।
voretaq7
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.