Linux之shell編程函數使用,linuxshell編程

來源:互聯網
上載者:User

Linux之shell編程函數使用,linuxshell編程

linux shell 可以使用者定義函數,然後在shell指令碼中可以隨便調用。下面說說它的定義方法,以及調用需要注意那些事項。

原文和作者一起討論:http://www.cnblogs.com/intsmaze/p/6675421.html

:intsmaze

函數定義

#!/bin/sh# func1.shhello()    ## 函數定義{        echo "Hello there today's date is `date +%Y-%m-%d`"        # return  2      ###傳回值其實是狀態代碼,只能在[0-255]範圍內}   hello #函數調用echo $?  #擷取函數的return值,就是擷取上一個命令的狀態代碼,如果return 2沒有注釋,就是擷取return 2 命令的狀態嗎。  echo "now going to the function hello intsmaze"

呼叫指令碼

[hadoop@centos-Reall-131 shtest]$ sh func1.sh Hello there today's date is 2017-04-060now going to the function hello intsmaze

注意:

1.必須在調用函數之前,先聲明函數,shell指令碼是逐行運行。不會像其它語言一樣先先行編譯。

2.函數傳回值,只能通過$? 系統變數獲得,可以顯示加:return 返回,如果不加,將以最後一條命令運行結果,作為傳回值。 return後跟數值n(0-255)

函數參數
#!/bin/bash# fun1.shfunWithParam(){    echo "第一個參數為 $1 !"    echo "第二個參數為 $2 !"    echo "第十個參數為 $10 !"    echo "第十個參數為 ${10} !"    echo "第十一個參數為 ${11} !"   echo "參數總數有 $# 個!"   echo "作為一個字串輸出所有參數 $* !"}funWithParam 1 2 3 4 5 6 7 8 9 34 73

注意,$10 不能擷取第十個參數,擷取第十個參數需要${10}。當n>=10時,需要使用${n}來擷取參數。

[hadoop@centos-Reall-131 shtest]$ sh fun1.sh 第一個參數為 1 !第二個參數為 2 !第十個參數為 10 !第十個參數為 34 !第十一個參數為 73 !參數總數有 11 個!作為一個字串輸出所有參數 1 2 3 4 5 6 7 8 9 34 73 !
函數傳回值
#!/bin/bash# fun2.shfunWithReturn(){    echo "這個函數會對輸入的兩個數字進行相加運算..."    echo "輸入第一個數字: "    read aNum    echo "輸入第二個數字: "    read anotherNum    echo "兩個數字分別為 $aNum 和 $anotherNum !"    return $(($aNum+$anotherNum))}funWithReturnecho "輸入的兩個數字之和為 $? !"#這裡上一個命令是 return $(($aNum+$anotherNum))

呼叫指令碼

[hadoop@centos-Reall-131 shtest]$ sh fun2.sh 這個函數會對輸入的兩個數字進行相加運算...輸入第一個數字: 100輸入第二個數字: 200兩個數字分別為 100 和 200 !輸入的兩個數字之和為 44 !#這裡上一個命令是 return 300

跨指令碼調用函數

假如上述的指令檔fun1.sh儲存在此路徑:/root/fun1.sh

則可在指令碼fun_other.sh中呼叫指令碼fun1.sh中的函數

#!/bin/bash# fun_other.sh.  /root/fun1.sh    # 註:  . 和 / 之間有空格# 或者 source /root/fun1.shfunWithParam 11 22 33 44 55 66 77 88 99 100 101

呼叫指令碼

[hadoop@centos-Reall-131 shtest]$ sh fun_other.sh第一個參數為 1 !第二個參數為 2 !第十個參數為 10 !第十個參數為 34 !第十一個參數為 73 !參數總數有 11 個!作為一個字串輸出所有參數 1 2 3 4 5 6 7 8 9 34 73 !第一個參數為 11 !第二個參數為 22 !第十個參數為 110 !第十個參數為 100 !第十一個參數為 101 !參數總數有 11 個!作為一個字串輸出所有參數 11 22 33 44 55 66 77 88 99 100 101 !

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.