Shell中函式的返回值的一種呼叫

2021-06-28 02:20:13 字數 631 閱讀 5321

# !/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時呼...