Bash脚本 - 返回实际上返回其他内容

时间:2016-10-08 13:31:07

标签: linux bash shell

我的原始代码:

    # Factorial Using Recursion

    res=1
    fact()
    {
        x=$1
        if [ $x -le 1 ]
        then
            echo "Actual - $res"
            return `expr $res`
        else    
            #echo $x
            res=$(($res * $x))
            echo "($res)"
            fact $[$x-1]                                
        fi
    }
    fact $1
    echo "Factorial of $1 = $?"

结果(存储在$res)肯定是我想要的,也是正确的。但不知何故,当它被$?返回并被捕获时,它就会变得错误。

Sample Image

1 个答案:

答案 0 :(得分:4)

返回代码的最大值为255,因此您无法返回大多数整数的阶乘。

相反,您的函数应该将值输出到标准输出,例如使用echo。捕获函数的输出,如result=$(fact "$x")

如果要在执行功能时输出其他信息,则可以使用echo 'whatever' >&2打印到标准错误。

res=1
fact()
{
    x=$1
    if [ "$x" -le 1 ]
    then
        echo "$res"
    else    
        res=$((res * x))
        fact "$((x - 1))"
    fi
}

我还修改了你的语法。