【问题标题】:Shell function does not return values greater than 255Shell 函数不返回大于 255 的值
【发布时间】:2016-07-18 14:54:35
【问题描述】:
   sum()
  {
     return $(($1+$2))

  }

   read a b
   sum $a $b
   echo $?

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

【问题讨论】:

  • 它是哪个外壳?
  • 就是所有shell的返回值的设计。它只会返回 0-255(一个小整数)。它旨在返回状态值,而不是计算。你会发现返回值是mod 255。我没有投反对票;-)。祝你好运。
  • @RhinoDevel bash 外壳

标签: linux shell


【解决方案1】:

你要求 shell 返回值。

返回值不能超过 255。

所以当您添加 a=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。

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2013-12-11
      • 2019-06-02
      • 1970-01-01
      • 2013-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-23
      相关资源
      最近更新 更多