1. 程式人生 > >關於 Shell中函式的返回值 問題

關於 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 函式返回的接收

shell中函式返回值接收主要有兩種方法。 方法一: 函式子程式的標準輸出賦值給主程式的變數。 ret=`function_name arg1 arg2 ...` 注意:不是引號。 例

C++函式返回的引用型別與非引用型別的區別

返回值為引用型別的函式某些情況下可作為表示式的左值,而非引用的則一般不可以。 函式返回值若為引用型別,當返回的是函式的引用形參時,則是對函式外的變數的引用,函式可以作為表示式的左值(被賦予新值)。 而當函式返回的是非引用型別時,返回的值是函式內隱式生成的

js函式返回return

全棧工程師開發手冊 (作者:欒鵬) 函式返回值 1、所有函式都有返回值,沒有return語句時,預設返回內容為undefined,和其他面向物件的程式語言一樣,return語句不會阻止f

關於 Shell函式返回 問題

# !/bin/shsum(){     echo $(($1+$2))     return $(($1-$2))}sum $1 $2c=$(sum $1 $2) echo $?echo $c執行命令:./bashTest 11 1執行結果是:12 —— sum $1 $

Python函式的變數和函式返回

1.函式的變數 區域性變數和全域性變數: Python中的任何變數都有特定的作用域 在函式中定義的變數一般只能在該函式內部使用,這些只能在程式的特定部分使用的變數我們稱之為區域性變數 在一個檔案頂部定義的變數可以供檔案中的任何函式呼叫,這些可以為整個程式所使用的變數稱為全域性變數。

Linux Shell函式返回

                Shell函式返回值,一般有3種方式:return,argv,echo1) return 語句shell函式的返回值,可以和其他語言的返回值一樣,通過return語句返回。示例:#!/bin/bash -function mytest(){    echo "arg1 = $1

ORACLE隨機從表取一條資料作為函式返回

需求是這樣的:有一張經緯度表,需要從中隨機取一條資料插入另一張表作為其中的兩個欄位。插入過程在儲存過程中,所以需要函式返回值為經緯度資料物件。 首先,生成返回值物件POINT_OBJECT,包括經度緯度。 --生成經緯度 CREATE OR REPLACE TYPE POINT_OBJECT AS OB

詳解C語言和C++的main()函式返回

返回值main應指示程式如何退出。返回值為0表示正常退出main。異常退出通常通過非零返回來表示,但是關於非零程式碼沒有明確的標準。另外,void main()在C ++標準庫明確被禁止,不應該被使用。在C++中合法的main函式使用方法如下: int main() 以及: int

shell 函式返回接收問題

shell中函式的呼叫方式有兩種,如下圖: 第一種方式,有點像C語言呼叫函式的風格,直接把函式的執行結果複製給變數!不過,這個賦值過程和C語言的函式賦值是不一樣的!shell中函式呼叫的第一種方式,是將標準輸出傳遞給主程式的變數,而不是返回值! 所以請看以下程式: #!

shell指令碼接收返回

/md05_sample //可執行程式 if [ $? -eq 1 ] //$? 為md05_sample的exit()或return 返回 then

Shell函式返回

shell函式返回值一般有3種方式:return語句 shell函式的返回值可以和其他語言的返回值一樣,通過return語句返回。比如: #!/bin/bash - function mytest() { echo "mytest function" echo "a

js一個函式獲取另一個函式返回問題

//此種為非同步,還不等ajax賦完值,函式就return了。   function getCaseInfoForMap(){    var formInfo=$("#firstForm").serialize();    var dd;     $.ajax({     

Linux Shell指令碼程式設計--函式返回

Shell函式返回值,常用的兩種方式:return,echo 1) return 語句shell函式的返回值,可以和其他語言的返回值一樣,通過return語句返回。示例: #!/bin/sh function test() { echo "arg1 =

sqlserver編寫自定義函式返回問題

寫了一個獲取符號間隔字串的函式,原先程式碼如下 CREATE FUNCTION funGetSubStr (  -- Add the parameters for the function here  @StrParams nvarchar(4000),  @char ch

C++sting的rfind函式返回

string中的find函式與rfind函式定義如下: int find(char c, int pos = 0) const;//從pos開始查詢字元c在當前字串的位置 int find(const char *s, int pos = 0) const;//從pos開始

shell 函式返回

Shell函式返回值,常用的兩種方式:return,echo。 1、return 語句 該返回方法有數值的大小限制,超過255,就會從0開始計算,所以如果返回超過255,就不能用這種方式,建議採用ec

Linux Shell函式返回 .

Shell函式返回值,一般有3種方式:return,argv,echo 1) return 語句 shell函式的返回值,可以和其他語言的返回值一樣,通過return語句返回。示例: [javascript] view plaincopyprint? #!/b

JSnew操作符與函式返回return

預設情況        預設情況下函式的返回值為undefined(即沒有顯示地定義返回值的話),但是建構函式比較例外,new建構函式在沒有return的情況下預設返回新建立的物件。但是在有顯示返回值的情況下,如果返回值為基本資料型別的話(string,number,b

Linux system函式返回(linux C++呼叫shell詳解)

階段2:呼叫/bin/sh拉起shell指令碼,如果拉起失敗或者shell未正常執行結束(參見備註1),原因值被寫入到status的低8~15位元位中。system的man中只說明瞭會寫了127這個值,但實測發現還會寫126等值。

shell】獲取函式返回的兩種方法

方法一: 使用全域性變數 g_result="" function testFunc() { g_result='local value' } testFunc echo $g_resu