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

标签 linux bash shell

我正在解决这个“递归中的阶乘函数(=获取参数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/

相关文章:

linux - 每周为 root 用户脚本更改密码

php - 哪些库/模块会影响阵列的运行速度?

linux - 管道中的多个 grep 在完成后不会终止

bash - shell历史文件的格式是什么

c - 通过 RTSP 传输视频和音频

linux - 在 BASH/Shell 上连续排序数字

linux - 通过 Bash 从 Cisco C40 获取输出

linux - 基本 bash 脚本 awk 和除法

linux - 在 shell 脚本中计算平均值时如何处理缺失值?

bash - 从shell脚本中的文件名中删除一级文件扩展名