我是bash的初学者.我写了一个脚本来计算num的平方.当num不小于16时,它是错误的... shell没有short或long类型.那么shell中最大的数字是多少?
1--1
2--4
3--9
::::
15-225
16-0
17-33
18-68
Run Code Online (Sandbox Code Playgroud)
代码是:
#!/bin/bash
square() {
let "res=$1*$1"
return $res
}
as=16
square $as
result=$?
echo $result
exit 0
Run Code Online (Sandbox Code Playgroud)
pax*_*blo 16
进程的返回码被限制为8位(其余的位有元信息,如"有核心转储吗?"和"信号是否会终止进程?"),所以你将无法用它来获得大于255的值.
所以所有的值都是模256.
16^2 = 256 % 256 = 0
17^2 = 289 % 256 = 33
18^2 = 324 % 256 = 68
:
22^2 = 484 % 256 = 228
23^2 = 529 % 256 = 17
Run Code Online (Sandbox Code Playgroud)
相反,尝试捕获输出而不是返回代码:
#!/bin/bash
square() {
let "res=$1*$1"
echo $res # echo answer rather than return
}
as=16
result=$(square $as) # capture echo rather than $?
echo $result
exit 0
Run Code Online (Sandbox Code Playgroud)