1
sum()
{
return $(($1+$2))
}
read a b
sum $a $b
echo $?
當我們將a = 255和b = 36的值傳遞給ans時,將會是35爲什麼?在shell腳本函數中返回的值不會超過255
sum()
{
return $(($1+$2))
}
read a b
sum $a $b
echo $?
當我們將a = 255和b = 36的值傳遞給ans時,將會是35爲什麼?在shell腳本函數中返回的值不會超過255
您正在要求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
大家都指出你的返回值,外殼函數不能返回一個值大於255
常見的方式來獲得值了的功能是將它們存儲在如下這樣的變量中:
#! /bin/sh
sum() {
local __res=$3
local res=$(($1 + $2))
eval $__res="'$res'"
}
sum 25000 5000 total
echo $total
它是什麼shell? – RhinoDevel
這是所有shell的返回值的設計。它只會返回0-255(一個小的int)。它意味着返回狀態值,而不是計算。你會發現返回的值是'mod 255'。我沒有低調;-)。祝你好運。 – shellter
@RhinoDevel bash shell –