關於 Shell中函數的傳回值 問題

來源:互聯網
上載者:User

標籤: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中函數的傳回值 問題

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.