gpt4 book ai didi

linux - Shell 脚本返回值在(正常与 Debug模式)执行中不同

转载 作者:太空狗 更新时间:2023-10-29 11:50:13 25 4
gpt4 key购买 nike

我正在解决这个“递归中的阶乘函数(= 获取参数 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)在终端上运行它时,返回值(例如 120 代表 5)是正确的。

但是当参数超过 5 时,它就全错了(比如 208 代表 6,而不是 720)。

真正奇怪的是,如果我在 Debug模式下运行它(例如 sh -x ./RecFact.sh 6),调试器会为每个输入值提供正确的值(如 720 代表 6)。

可能是什么原因?

最佳答案

错误代码(您使用 $? 检查)的范围为 0-255。事实上,720 模 256 得到 208。

与其滥用 $?您应该使用专用变量来传达结果。

关于linux - Shell 脚本返回值在(正常与 Debug模式)执行中不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41164720/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com