जवाबों:
आपके पहले उदाहरण में, $((X+1))
एक्स + 1 की अभिव्यक्ति का मूल्यांकन करता है और परिणाम के लिए फैलता है, जो तब चर को सौंपा जाता है।
दूसरे उदाहरण में, एक से $((X=X+1))
वृद्धि X
( $((X++))
यह भी मान्य और कम है, लेकिन जरूरी नहीं कि शेल द्वारा समर्थित है), फिर नए मूल्य के लिए फैलता है $X
, जो अशक्त कमांड के लिए पहला तर्क है :
। अशक्त कमांड उसके तर्कों की अनदेखी करती है, और परिणाम को खारिज कर दिया जाता है (साइड इफेक्ट्स के साथ)।
मैं व्यक्तिगत रूप से तीन (अपेक्षाकृत व्यक्तिपरक) कारणों की वजह से पहला रूप पसंद करूंगा:
यदि आप केवल एक कमांड के वातावरण को संशोधित कर रहे थे तो आपको पहले संस्करण का उपयोग करना होगा
X=$((X+1)) /usr/local/bin/something
आपको सीधे तर्क में मूल्यांकन जोड़ने के लिए दूसरे रूप का उपयोग करना होगा:
ls -la "file-$((X++))" # or ...
ls -la "file-$((X=X+1))" # for better compatibility
यह वांछित दुष्प्रभाव है, एक पंक्ति बचाता है, और बहुत स्पष्ट है।