मैं बैश स्क्रिप्ट और अन्य टूल्स के बने कई सिस्टमों के साथ काम कर रहा हूं। काफी बार, मैं त्रुटि शर्तों को पकड़ने और अप्रत्याशित व्यवहार को रोकने के लिए -e, -u और -o पाइपफ़ेल विकल्पों का उपयोग करने के लिए अच्छा अभ्यास मानता हूं।आप वर्तमान विकल्पों के लिए बैश से कैसे पूछ सकते हैं?
हालांकि, तीसरे पक्ष के पुस्तकालयों में से कुछ (जिनके पास मेरे पास स्रोत बदलने की क्षमता है) ऐसा नहीं करते हैं, और वे के साथ मौजूद चर परीक्षणों को बदलने में खुश नहीं हैं।
उन में लिपियों को निष्पादित नहीं किया जा सकता है। तो मैं इनमें से कुछ में क्या करना चाहता हूं, विकल्पों का एक अधिक अनुमोदित सेट सेट करें, और फिर कठोर को पुनर्स्थापित करें। के बाद से सवाल में स्क्रिप्ट बहुत से उपयोगकर्ताओं को, जिनमें से कुछ भी एक ही समस्या का सामना करना पड़ा द्वारा उपयोग किया जाता है, मैं तीसरे पक्ष के स्क्रिप्ट में इस परिवर्तन डाल करना चाहते हैं अर्थात्:
<preserve original options>
set +e +u +o pipefail
#do stuff like
if [ -n "$_UNSET_VAR" ] ; then
cp <some stuff> <some other stuff>
fi
<restore original options (whatever they were)>
मैं की रक्षा करने के तरीके के लिए देख रहा हूँ और इन मूलों को बहाल करें।
उत्कृष्ट। यह काम करता है - https://github.com/dannystaple/virtualenv/commit/a220ed9cca154cff5a04caf957f619dd61d1e15b। –