shell - Why does my bash function return the wrong value? -
तथ्य () {यदि [$ 1 -q 1] फिर 1 और y लौटें = 'expr $ 1 - 1' तथ्य $ yb = $ (($ 1 * $?)) $ $ वापस लौटाएंगे "एन्टर करें" को पढ़ने के लिए तथ्य $ n प्रतिध्वनि "$?"
यह एक संख्या का फ़ैक्टोरियल खोजने के लिए एक कार्यक्रम है। उत्पादन 5 तक सही है। 6 का उत्पादन 208 के रूप में दे रहा है, लेकिन सही उत्तर 720 है। इस त्रुटि का कारण क्या है?
फ़ंक्शन रिटर्न मान केवल 255 तक जा सकते हैं:
a () {return 255} एक गूंज $? बी () {वापसी 256} बी प्रति ईको $?
उत्पादन:
$ bash x.sh 255 0
वापसी
है जैसे exit
और exit
केवल 255 () तक के मान ले सकते हैं।
एक वैकल्पिक एक पुनरावर्ती सुझाव पर स्विच करना है, जैसा कि एक अन्य उत्तर में वर्णित है । वैकल्पिक रूप से आप प्रतिध्वन का उपयोग करके पुनरावर्ती आउटपुट को इस तरह से कैप्चर कर सकते हैं:
#! / Bin / bash fact () {यदि [$ 1 -q 1] तब 1 और ycho = $ (expr $ 1 - 1) एफ = $ (तथ्य $ y) b = $ (($ 1 * $ f)) echo $ b f} एकोरो "एन्टर" पढें n तथ्य $ n
Comments
Post a Comment