在shell脚本函数中不会返回超过255个

sum() { return $(($1+$2)) } read ab sum $a $b echo $? 

当我们将a = 255和b = 36的值传递给ans时,为什么?

你正在要求shell返回值。

返回值不能超过255。

所以当你添加一个= 255和b = 36

  a + b = 255 + 36 = 291 

但是因为它只能从0-255返回一个值。

你减去

 result - return value = 291 - 256 (ie the return value from 0-255) = 35. 

因此你的回报值是35。

正如大家指出的那样,shell函数不能返回大于255的值。

从函数中获取值的常用方法是将它们存储在变量中,如下所示:

 #! /bin/sh sum() { local __res=$3 local res=$(($1 + $2)) eval $__res="'$res'" } sum 25000 5000 total echo $total