समस्या यह है कि बैश में हर आदेश केवल एक बाहर निकलें कोड है। जब आप export foo="$(false)"से बाहर निकलें कोड falseबस त्याग दिया है। यदि आप इसके बजाय करते हैं
foo="$(false)"
export foo
फेल होने वाले पहले कमांड पर errexitसेटिंग द्वारा काम किया जा सकता है, उदाहरण के लिए ।
एक स्ट्रिंग शाब्दिक की घोषणा और असाइन करना जैसे कि export foo='bar'इस समस्या से ग्रस्त नहीं है। लेकिन सॉफ्टवेयर विकास में परिवर्तन एकमात्र स्थिर है, और इस तरह के बयानों को विभाजित करके भविष्य के सबूत के लिए बस अच्छा हाउसकीपिंग है।
असाइनमेंट के विशिष्ट आदेशों के अलावा आप उल्लेख करते हैं कि एकल असाइनमेंट जैसे कई कमांड भी हैं foo="$(false)$(true)"। देखें pipefailमें man bashअभी तक एक और इस तरह के जाल के लिए।
एक और बात याद रखें कि घोषणा और असाइनमेंट का क्रम कभी-कभी प्रासंगिक होता है। उदाहरण के लिए, आप उन्हें असाइन करने से पहले चर घोषित करना चाहते हैं। (दुर्भाग्य से पहली बार उन्हें असाइन करने से पहले चर घोषित करना संभव नहीं है ।)local readonly