SHELL函數處理

來源:互聯網
上載者:User

標籤:style   blog   http   color   使用   sp   on   div   2014   

SHELL函數調用分為兩種:

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

C語言中,函數調用,是將函數的傳回值返回給被調函數,如:

fun(){     return (1+2);}main(){    a = fun();    ...............}

這實際上是將函數的傳回值,也就是return的值複製給變數a!可是,大家注意:shell中函數調用的第一種方式,是將標準輸出傳遞給主程式的變數,而不是傳回值!請看以下程式 test.sh:

#!/bin/sh check_user(){    n=`cat /etc/passwd | cut -d ":" -f 1 | grep "^$1$" -Rn | cut -d ":" -f 1`    echo $n    #這裡是使用echo語句,將結果輸出到標準輸出上,所以在主程式中可以使用變數接收}userinfo(){    userinfo=`head -$1 /etc/passwd | tail -1 | cut -d ":" -f 3,4`    echo $userinfo}while truedo        read username        m=`check_user $username`        #使用變數接收函數check_user傳遞的值        if [ -n "$m" ]        then           userinfo $m           exit        else            echo "$username is not exit!"         fidone

測試代碼:

[[email protected] ~]$ ./test.sh dddd is not exit!qiu.li40006:1004

而函數的第二種調用方式,是使用$?來接收上一程式的傳回值狀態,也就是return返回的值。下面程式中,if判斷後,return 0 或者 1,在這裡,我們就可以使用$?接收return的值,然後儲存下來,繼而進行下一步的判斷!

check_user(){    n=`cat /etc/passwd | cut -d ":" -f 1 | grep -n "^$1$"| cut -d ":" -f 1`    if [ -z "$n" ]    then        return 0    else        return 1    fi}show_userinfo(){    userinfo=`head -$n /etc/passwd | tail -1 | cut -d ":" -f 1,3,4`    echo $userinfo}echo  "input username : "read usernamecheck_user $usernamenum=$?if [ $num -eq 0 ]then    echo "The user ‘$username‘ is not exist."    exitelse    show_userinfo $nfi

上面兩個程式的執行結果是一樣的,但是要注意著兩種函數的不同調用方式,以及其返回給主調程式的到底是什麼。明白了這一點,才能準確知道到底使用何種方式接收傳回值! 

SHELL函數處理

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.