2016-03-30 86 views
1
sum() 
    { 
    return $(($1+$2)) 

    } 

    read a b 
    sum $a $b 
    echo $? 

當我們將a = 255和b = 36的值傳遞給ans時,將會是35爲什麼?在shell腳本函數中返回的值不會超過255

+0

它是什麼shell? – RhinoDevel

+2

這是所有shell的返回值的設計。它只會返回0-255(一個小的int)。它意味着返回狀態值,而不是計算。你會發現返回的值是'mod 255'。我沒有低調;-)。祝你好運。 – shellter

+0

@RhinoDevel bash shell –

回答

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

大家都指出你的返回值,外殼函數不能返回一個值大於255

常見的方式來獲得值了的功能是將它們存儲在如下這樣的變量中:

#! /bin/sh 

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


sum 25000 5000 total 

echo $total 
相關問題