2016-12-27 7 views
6

मैं क्यों संकेत दिया रेखा से नीचे 1 लौटा रहा है पता नहीं है, जबकि ((count++)) के बाद फांसी 0.क्यों ((गिनती ++)) करता वापसी 1 से बाहर निकलें कोड पहली बार रन

[[email protected] ~]$ count=0 
[[email protected] ~]$ echo $? 
0 
[[email protected] ~]$ count++ 
-bash: count++: command not found 
[[email protected] ~]$ (count++) 
-bash: count++: command not found 
[[email protected] ~]$ ((count++)) 
[[email protected] ~]$ echo $? 
1 <------THIS WHY IS IT 1 AND NOT 0?? 
[[email protected] ~]$ ((count++)) 
[[email protected] ~]$ echo $? 
0 
[[email protected] ~]$ ((count++)) 
[[email protected] ~]$ echo $? 
0 
[[email protected] ~]$ echo $count 
3 

उत्तर

10

लौट रहे हैं excerpt से देखें help let पृष्ठ,

यदि अंतिम एआरजी 0 का मूल्यांकन करता है, तो रिटर्न 1 दें; 0 अन्यथा लौटा दिया गया है।

के बाद से संचालन बहुत पहले समय के 0 के लिए, बाद वेतन वृद्धि, ((count++)) है बनाए रखा है, इसलिए लौटने 1

सूचना, एक ही पूर्व वेतन वृद्धि ((++count)) के लिए नहीं होता है, के बाद से मूल्य सेट कर दिया जाता पहले पुनरावृत्ति पर 1 पर।

$ unset count 
$ count=0 
$ echo $? 
0 
$ ++count 
-bash: ++count: command not found 
$ echo $? 
127 
$ ((++count)) 
$ echo $? 
0 
संबंधित मुद्दे