shell 函式返回值接收問題

2021-06-28 11:16:09 字數 1444 閱讀 9232

shell中函式的呼叫方式有兩種,如下圖:

第一種方式,有點像c語言呼叫函式的風格,直接把函式的執行結果複製給變數!不過,這個賦值過程和c語言的函式賦值是不一樣的!

c語言中,函式呼叫,是將函式的返回值返回給被調函式,如:

[cpp]view plain

copy

fun()    

[cpp]view plain

copy

main()    

shell中函式呼叫的第一種方式,是將標準輸出傳遞給主程式的變數,而不是返回值!

所以請看以下程式:

[cpp]view plain

copy

#!/bin/sh 

check_user()  

userinfo()  

while

true

doread username  

m=`check_user $username`  

[cpp]view plain

copy

#使用變數接收函式check_user傳遞的值

if [ -n "$m" ]  

then  

userinfo $m  

exit  

else

echo "$username is not exit!"

fi  

done  

而函式的第二種呼叫方式,是使用$?來接收上一程式的返回值狀態,也就是return返回的值。

下面程式中,if判斷後,return 0 或者 1,在這裡,我們就可以使用$?接收return的值,然後

儲存下來,繼而進行下一步的判斷!

[cpp]view plain

copy

check_user()  

show_userinfo()  

echo  "input username : "

read username  

check_user $username  

num=$?  

if [ $num -eq 0 ]  

then  

echo "the user '$username' is not exist."

exit  

else

show_userinfo $n  

fi  

上面兩個程式的執行結果是一樣的,但是要注意著兩種函式的不同呼叫方式,以及其返回給

主調程式的到底是什麼。明白了這一點,才能準確知道到底使用何種方式接收返回值!

**:

shell 函式返回值接收問題

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

shell函式返回值不是

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

關於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時呼...