shell 函式返回值接收問題

2021-06-16 18:31:03 字數 1286 閱讀 8600

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

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

fun()

main()

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

所以請看以下程式:

#!/bin/sh 

check_user()

userinfo()

while true

doread username

m=`check_user $username`

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

if [ -n "$m" ]

then

userinfo $m

exit

else

echo "$username is not exit!"

fidone

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

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

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

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語言中,函式呼叫,是將函式的返回值返回給被調函式,如 cpp view plain copy fun cpp view plain co...

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