Shell函数不返回大于255的值

时间:2016-03-30 14:18:48

标签: linux shell

   sum()
  {
     return $(($1+$2))

  }

   read a b
   sum $a $b
   echo $?

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

2 个答案:

答案 0 :(得分:1)

你要求shell返回值。

返回值不能超过255。

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

 a + b = 255 + 36 = 291

但因为它只能返回0-255之间的值。

你减去

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

因此您的返回值为35。

答案 1 :(得分:1)

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

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

#! /bin/sh

sum() {
    local __res=$3
    local res=$(($1 + $2))
    eval $__res="'$res'"
}


sum 25000 5000 total

echo $total