-1

我在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

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

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

4

1 回答 1

2

眼前的问题是

less=`expr %rn - 1`

将其更改为

less=`expr $rn - 1`

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

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

fact=`expr $rn \* $less`

将变得容易得多

((fact=rn*less))

优点是您不必费心转义在shelllike中具有特殊含义的字符*

于 2018-01-26T14:01:00.097 回答