Shell 非整数参数在 expr 错误中



我用shell脚本编写了以下代码:

num=$1
sum=0; rn=0
less=0; fact=0
while [ $num -gt 0 ]
do
rn=`expr $num % 10`
num=`expr $num / 10`
while [ $rn -gt 1 ]
do
less=`expr %rn - 1`
fact=`expr $rn * less`
rn=`expr $rn - 1`
done
sum=`expr $sum + $fact`
done
echo $sum

但是终端显示以下错误,没有任何行号:终端错误图片

请告诉我我在哪里搞砸了??

直接的问题是

less=`expr %rn - 1`

将其更改为

less=`expr $rn - 1`

你应该航行回家。但是您也可以使用 bash 的-x选项调试脚本,这将为您提供逐行分析。

不鼓励使用 expr,因为您可以轻松地将其替换为((expression))构造(如果需要浮点运算,则calc(。然后

fact=`expr $rn * $less`

会变得容易得多

((fact=rn*less))

优点是你不应该费心转义那些在shell中具有特殊含义的字符,比如*

相关内容

  • 没有找到相关文章

最新更新