<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                ? ? 寫一個又大又復雜的程序的技巧之一,就是將該程序分解成一些稱之為子程序的小程序,而在每一個子程序中,又可以把重復出現的代碼組織到一起形成一個函數。 ? ? 函數和子程序執行的是主程序某一特定的任務。我們要做的工作就是寫一個主程序,當需要某一個函數和子程序的時候就調用它們。 本章先了解函數。 在編寫Linux程序的時候,有時不得不一遍又一遍地重寫某些相同的命令。例如,給朋友寫一份邀請信,請他們來參加一個狂歡舞會。可把這些信息寫在一個for in循環中,并將每個朋友的名字放在一個單詞表中。當然,也可以把每一份邀請信都寫進程序中,只不過是將內容重寫幾次罷了。或者使用一個函數。 函數(function)是Linux程序的一部分,與程序的其余部分是分開的。試設想一下:一個函數就像程序中的一個分隔倉。我們先給一個函數取一個惟一的名字(即函數名),然后就可以把經常要使用的一條或多條命令放入函數之中。 當linux需要使用存放在函數中的命令時,可以在程序中鍵人該函數的名字。因此,通過使用函數名就可以重復使用函數中的命令,而不必再重寫這些命令。譬如,把那些邀請詞放在一個函數中。 在每次調用函數時,可以給函數傳遞一定的信息。這個過程稱之為給函數傳遞參數。因此,可以創建一個打印邀請信的函數,每調用它一次,就給函數傳遞一個名字,而函數則會自動地把名字賦給函數中的某個變量。以后,當涉及到那位朋友的時候,代表他的就是一個變量,而不是他的名字。 通常使用函數來處理傳遞給函數的某些信息,然后,將處理結果返回到程序的調用處。函數處理后返回的結果稱之為返回值(return value)。我們可以在程序中利用這個返回值。 如果需要重寫某段代碼,就可以使用函數來代替它。 ## 創建一個函數 在使用一個函數之前,必須先在程序中定義一個函數。因此,創建一個函數最好的地方是在程序的開始位置。創建函數也稱之為定義函數,定義的結果稱為函數定義。 定義一個函數請遵循下述步驟: 1.首先在程序中鍵入一個關鍵字function。 ? 它表示要創建一個函數。 2.給函數起一個名字。且它在程序中沒有任何重名。 ? 函數的名稱最好能反映函數的功能。 3.在函數名和第一個命令之間要使用一個開大括號"{"。 ? 它表示函數執行命令的入口。 4.在函數體中鍵入所需要的任何命令。 ? 在函數體中使用在本書中討論的任何命令都可以。 5.在函數體每一個命令之后,下一個命令之前用一個分號";"隔開。 ? 注意,分號和命令之間不要留有空格。分號";"表示一個特定的命令結束。 6.在最后一個命令的分號";"之后用一個閉大括號"}"。 ? 注意,在最后一個分號"}"和"|"之間不要留有空格。閉大括號"|"表示函數定義的結束。 下面是函數定義的一般格式: ~~~ function name { command; command; ?} ~~~ 下面是一個典型的函數定義,它的作用是在屏幕上顯示一條歡迎信息(此函數例子在本 章后面還會引用到,請留心)。 ~~~ function display { echo "Welcome to the world" echo "of functios" } ~~~ ## 調用一個函數 在定義了一個函數以后,調用它是非常容易的。我們需要做的就是在需要使用該函數的地方用一下函數名即可。 通過函數調用,Linux會自動尋找該函數的定義,并執行其中的每一條指令。 在程序執行到閉大括號“}”后,Linux返回到調用函數的下一行,并繼續執行其他的指令。 下面是函數調用的一個典型例子: ~~~ #!/bin/bash clear function display echo "Welcome to the world" echo "of functions. " } display ~~~ ## 給函數傳遞參數 例如,假設要寫一個驗證用戶ID和密碼( password)的函數,這個函數除了ID和密碼之外,還包括所有驗證用戶身份所必需的命令和信息。在每次調用函數時,除了ID和密碼可以不同之外,其余各部分都應相同。 如果讀者想在程序中調用該函數,就把ID和密碼作為參數傳遞給函數,linux把它們賦給某些變量。在這個程序中,這兩個變量分別是$$1和$$2。每一個數字都指向它所對應的傳遞來的參數。注意,由于Linux在這里期望的是數字,所以不能用其他的字符如varl來取代這些變量中的數字的。 因此,可以用變量來取代函數定義中的信息。例如,ID是傳遞給函數的第一個參數,密碼是傳遞給函數的第二個參數。因此,在函數定義中,當需要引用ID時就可以用變量$1,需要引用密碼時可以用變量$2。 請看下面的例子: ~~~ #!/bin/bash clear function verify { if [$1 -eq "Bob" ]&&[$2 -eq "555"] then echo "Verified" eise echo "Rejected" fi } verify Bob 555 ~~~ ## 驗證傳遞給函數的參數的個數 如果程序不能給一個函數傳遞它所需要的全部信息,可能會遇到麻煩。例如,一個函數可能要依據程序提供的某些信息來進行某種計算操作。不過,如果程序根本不給函數傳遞什么 信息,也可能會出現錯誤。 變量$#包含了傳遞給函數的參數的個數。通過對變量$#的值和函數實際需要的參數的 個數進行比較,就可以決定是否阻止函數處理傳遞來的信息。請看下面的示例: ~~~ #!/bin/bash clear function verify { if [$# -ne 2] then echo "Wrong number of arguments!" else if[$1 -eq "Bob"] &&[$2 -eq "555"] then echo "Verified" else echo "Rejected" fi fi } verify Bob 555 ~~~ ## 與子程序共享函數 ? ? 子程序同樣也可以使用程序員建立的函數。只要把子程序設想成是程序中的一個程序即可。 ? ? ?我們建立一個用函數驗證用戶ID和密碼的程序。但這次卻想在另一個不含有該函數的程序中使用該函數。當然,不是把該函數復制到第二個程序中,而是讓第二個程序(子程序)也能分享第一個程序中的函數。 ? ? 我們可以用export命令輸出函數,實現子程序之間共享函數。然后,就可以在子程序中調用該子函數。請看下面的例子: ~~~ #!/bin/bash clear function verify { if [$# -ne 2] then echo "Wrong number of arguments!" else if[$1 -eq "Bob"]&&[$2 -eq "555"] then echo "Verified" else echo "Rejected" fi fi } export verify subprogram1 ~~~ 現在對加在函數定義之后的兩行說明如下: 1.在函數定義結束符“}”之后,用export命令來說明子程序subprogram1可以訪問函數verify。 2.程序中最后一行是調用子程序subprogram1。注意,子程序subprogram1并沒有包含函數verify的定義,但子程序可以調用它,因為在調用予程序之前已用export命令說明了輸出該函數verify。 子程序subprogram1如下: ~~~ #!/bin/bash clear verify "Bob" "555" ~~~ ## 從函數返回信息 函數就像一條雙行道,程序可以發送信息給函數,函數可以回送信息給程序。比如說,不是用函數verify驗證一個用戶的ID和密碼是否正確,而是讓函數將它處理后的結果返回給調用程序。 那么,調用程序就要決定它下面該如何操作。 函數的返回值通常存儲在變量$?中。但要注意,返回值必須是在0到256之間的一個整數。因此,是不能將字符串作為返回值返回的。 通常是用一個關鍵字return,再在其后加上一個要返回的值的方式,從函數返回一個值。 由于返回值是一個整數,因此必須給每一個要返回的整數賦予一定的含義。例如,常用0表示函數運行正常,用非0表示函數運行出錯。 關鍵字return可以放在函數中的任意位置,但它通常放在函數驗證某些值-----如比較ID和密碼的位置之后。Linux執行到return之后,函數就停止往下執行,返回到主程序的調用行。 若想知道如何從函數返回一個值,請看下面的例子: ~~~ #!/bin/bash clear function verify { if [$# -ne 2] then return 1 else if [$1 -eq "Bob"]&&[$2 -eq "555"] then return 0 else return 2 echo "Rejected" fi fi } verify Bob 555 case $? in do 0) echo "Verified" ;; 1) echo "Wrong number of arguments!" ;; 2) echo "Rejected" ;; done ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看