我正在解决这个“递归中的阶乘函数(=获取参数n的n!)”问题。这是我想出的 bash shell 脚本代码。我给出一个整数作为参数:
#!/bin/bash
# Script name: RecFact.sh
#
# recursive factorial
factorial(){
if [ $1 -eq 0 ]; then
return 1
fi
pro=`expr $pro \* $1`
factorial `expr $1 - 1`
return $pro
}
pro=1
factorial $1
echo "$?"
问题是,当我在终端上以 1~5 作为它需要的一个参数(例如 ./RecFact.sh 5)运行它时,返回的值(例如 5 为 120)是正确的。
但当参数超过 5 时,就会全部出错(例如 6 为 208,而不是 720)。
真正奇怪的是,如果我在 Debug模式下运行它(例如 sh -x ./RecFact.sh 6),调试器会为每个输入值给出正确的值(例如 720 为 6)。
可能是什么原因?
最佳答案
错误代码(用 $? 检查)的范围是 0-255。事实上,720 模 256 得到 208。
而不是滥用$?您应该使用专用变量来传达结果。
关于linux - Shell脚本的返回值在(正常模式与 Debug模式)执行中是不同的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41164720/