मैं कैसे जान सकता हूं कि सेट-ई विकल्प सक्षम है या नहीं?


7

मैं एक शेल फ़ंक्शन लिख रहा हूं जिसे कई अलग-अलग जगहों से बुलाया जाएगा और मैं फ़ंक्शन (संभवतः सक्षम) set -eशेल विकल्प को अक्षम करने, निष्पादित करने के अंदर होने वाली सभी त्रुटियों को अनदेखा करना चाहता हूं set +e

समस्या यह है कि मुझे नहीं पता कि वह विकल्प निर्धारित किया गया था या नहीं, इसलिए मुझे नहीं पता कि क्या वास्तव में इसे अक्षम करने की आवश्यकता है, और अधिक महत्वपूर्ण, अगर मुझे इसे फिर से सेट करने की आवश्यकता है।

तो, मुझे कैसे पता चलेगा कि यह सेट है या नहीं? क्या -eशेल विकल्प के अंदर सभी कमांड की त्रुटियों को अनदेखा करने का कोई तरीका है यदि शेल विकल्प को अनदेखा किया जाता है यदि सेट किया गया है?


जवाबों:


15

$ के मूल्य को देखें - यदि इसमें 'ई' है, तो '-ई' विकल्प सेट है। इस चर में सभी सेट विकल्पों की सूची है। यह बैश मैन पेज में वर्णित है।


5
आप कुछ इस तरह से देख सकते हैं [[ $- =~ e ]]
अंसार विचर्स

@AnsgarWiechers आपकी जाँच का तरीका मेरे से बेहतर है echo $- | grep -q "e":)
ट्रेवर बॉयड स्मिथ

1

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

[ "${-#*e}" != "$-" ]

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