我用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
中具有特殊含义的字符,比如*