# !/bin/sh
sum()
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
C 多返回值函式的一種實現
閱讀本文前置知識 正文本文已搬運至作者個人部落格 此部落格主要發布ctf及midi 製作相關博文 筆者寫作業的時候遇到了該需求,題目原題如下 2500年前數學大師畢達哥拉斯就發現,正整數數對220和284之間存在著奇妙的聯絡 220的因數之和 除了自身之外的因數 為1 2 4 5 10 11 20 ...
shell 返回值一
今天看同事寫的指令碼,發現其中用乙個函式為變數賦值,然後發現那個函式的return值並非是我所期望的值,於是查詢了一些資料,發現自己之前對return的理解大大的錯誤了。return命令會使得乙個函式返回return命令會返回乙個單一的數字引數,而這個數字引數 0 255 在呼叫這個函式的指令碼中是...
關於Shell中函式的返回值問題
bin sh sum 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時呼...