shell 返回值一

2021-06-16 11:41:56 字數 1136 閱讀 5344

今天看同事寫的指令碼,發現其中用乙個函式為變數賦值,然後發現那個函式的return值並非是我所期望的值,於是查詢了一些資料,發現自己之前對return的理解大大的錯誤了。

return命令會使得乙個函式返回return命令會返回乙個單一的數字引數, 而這個數字引數(0-255)在呼叫這個函式的指令碼中是可見的.如果沒有指定返回引數,return在預設情況下會返回上一次命令的返回**

當指令碼遇到return後會跳出當前程序,並把其後的值賦給「?」。簡單而粗暴的說就是,return所在的程序終止,把遺言留給「?」(echo $?呼叫)

看這個例子

cat testreturn

# !/bin/sh

test()

test

echo $? 執行

#bash -x  

testreturn 

+ test

+ echo this is a test

this is a test

+ return 51

+ echo 51

51指令碼遇到「return 51」後,把值「51」交給「?」,然後這個函式就終止了,不再執行下面的「echo lala;return 8」

這個和其他語言中所說的返回這有些不同。

再看這個例子

cat testreturn

# !/bin/sh

test()

a=`test`

echo $a

此時變數a的值是this is a test。a所獲得的內容,是作為子程序的函式test的所有輸出,與return的值無關

再看這個下面的例子

cat testreturn

# !/bin/sh

sum()

sum $1 $2

c=$(sum $1 $2) 

echo $?

echo $c

執行命令:./bash testreturn 11 1

執行結果是:

12 —— sum $1 $2的結果

10 —— echo $?的結果,因為return的值為10

12 ——  

echo $c的結果,值為12,所以c並不會被附上return的值,echo $c時呼叫了sum函式,所以列印了12

shell返回值二

linux shell 可以使用者定義函式,然後在shell指令碼中可以隨便呼叫。下面說說它的定義方法,以及呼叫需要注意那些事項。一 定義shell函式 define function 語法 function funname 說明 1 可以帶function fun 定義,也可以直接fun 定義,不...

shell 命令返回值 傳遞

方法一 注意cat命令外面的那個引號是反引號,鍵盤上數字1旁邊那個 desktop temp aaa cat 123 desktop temp echo aaa abc 方法二 desktop temp ccc cat 123 desktop temp echo ccc abc cat test3 ...

shell函式返回值不是

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