expr错误中的shell非整数参数

时间:2018-01-26 13:34:09

标签: bash 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

但终端显示以下错误,没有任何行号: Terminal Error pic

请告诉我在哪里搞砸了?

1 个答案:

答案 0 :(得分:2)

当前的问题是

less=`expr %rn - 1`

将其更改为

less=`expr $rn - 1`
你应该回家了。但您也可以使用bash的-x选项调试脚本,这样可以逐行分析。

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

fact=`expr $rn \* $less`

将变得更容易

((fact=rn*less))

优势在于您不应该在shell * import pyautogui, time import PIL input("Press Enter to start") print("Starting program in 5 seconds") time.sleep(5) #open edgewise pyautogui.hotkey("win") pyautogui.typewrite("edgewise") pyautogui.hotkey("Enter") time.sleep(20) print("Checking for error message") a = pyautogui.locateOnScreen("ok.png") while True: if a == None: print("Not Found") break else: print("Found") new0 = a[0] new0 = new0 + 10 new1 = a[1] new1 = new1 + 10 pyautogui.moveTo(new0,new1,duration=1) pyautogui.click() break input("Finished") 中转义具有特殊含义的字符