標籤:shell
# !/bin/sh
sum()
{
echo $(($1+$2))
return $(($1-$2))
}
sum $1 $2
c=$(sum $1 $2)
echo $?
echo $c
執行命令:./bashTest 11 1
運行結果是:
12 —— sum $1 $2的結果
10 —— echo $?的結果,因為return的值為10
12 —— echo $c的結果,值為12,所以c並不會被附上return的值,echo $c時調用了sum函數,所以列印了12
我們對shell中的返回值的理解有偏差,shell中的返回值一般指命令執行後的返回值,一般是命令執行成功返回0,執行失敗返回1,命令執行後,可以用echo $?查看返回值是多少,在本例子中,因為函數有return語句,則說明函數自己定義了一個返回值,可以通過echo $?查看這個返回值,c=$(sum $1 $2)的值並不等於return的值,說明shell中並沒有像我們在C中定義函數時,如同c=abs(i,j)那樣的返回值調用。
有人說了這樣的話:
基本明白了,那意思是說shell裡的函數沒有像其他語言一樣將函數的返回值賦予給某個變數嗎?
如
c=sum_test $1 $2
echo $c暱稱: hxl 時間: 2010-06-09 10:34:00回複 hxl
沒有。。。。暱稱: lkk2003rty 時間: 2010-06-09 11:27:00
################ 以上來自http://blog.163.com/[email protected]/blog/static/44780245201062865644141/##################
正確方法:function plus () {
read -p "input number1:" number1
read -p "input number2:" number2
#echo $(($number1+$number2)) #兩組括弧的意思是做算術運算
echo `expr $number1 + $number2`
}
res=$(plus)
echo "plus result is $res"
使用echo , 用 res=$(plus) 調用和擷取
關於 Shell中函數的傳回值 問題