關於Shell中函式的返回值問題

2022-09-23 11:45:09 字數 887 閱讀 8562

# !/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

暱稱: hxl 時間: 2010-06-09 10:34:00

回覆 hxl

沒有。。。。

暱稱: lkk2003rty 時間: 2010-06-09 11:27:00

################ 以上來自

正確方法:function plus ()

res=$(plus)

echo "plus result is $res"

使用echo , 用 res=$(plus) 呼叫和獲取

shell函式返回值不是

shell中美元符號的使用 找了半天原因,就在上篇博文裡,我在用shell寫素數時,發現了乙個問題,老師所說的 代表函式返回值的說法並不準確,所以查了一下,然後給用 大家展示一下具體效果 最後執行的命令的結束 返回值 函式呼叫之後執行了一條 echo 這是乙個很簡單的shell 乙個函式,引數為 i...

函式中的返回值

function fn n,m fn 代表函式本身 fn 10,20 實參 給形參傳遞的具體值 代表函式執行後返回的結果,函式執行的時候,都會形成乙個全新的私有作用域 私有棧記憶體 把原有堆記憶體中儲存的字串中變為js 表示式執行 保護裡面的私有變數不受外界的干擾 和外界是隔離的 我們吧函式執行的這...

關於signal函式的返回值

include include include typedef void signal handler int 定義乙個signal handler函式指標型別 signal handler signal int signo,signal handler sig handler 宣告乙個signal...