1. 程式人生 > >linux shell script 進階篇(1)--如何打造功能強大的函式?

linux shell script 進階篇(1)--如何打造功能強大的函式?

函式不管在那個程式語言中都有舉足輕重的地位,在linux shell script中當然也不例外,下面我們就一起學習如何打造出功能強大的函式。

1.如何在script中建立一個函式,可以用以下兩種方式:

A.  function name

{

  commands

}

B.  name()

{

  commands

}

你只需要挑選上面的一種喜歡的方式來實現你的函式即可。

2.如何使用函式?我們通過一個例子來理解:

當然這裡需要大家注意,如果你試圖在函式建立之前使用它會提示錯誤。command not found.我們看下面的例子:

還有一個需要注意的是,你必須保證每一個函式名稱都是唯一的,否則會發生你意想不到的問題,我們通過下面的例子:

3.函式的返回值,請看下面的例子:

A.當函式沒有明確定義返回值時,預設返回值是函式最後一條命令的執行返回值。

B.我們可以通過return命令自己指定想要返回的值,但是這個返回值是有條件的,它必須是0-255之間的整數,如果不在此範圍,將會自動返回一錯誤值,大家可以調式下面的例子:

請大家注意,既然return 能夠主動從函式返回,所以return後面的語句將不被執行,你就別白費了。

4.使用函式的輸出,你能夠用一個指令碼變數捕獲函式的輸出,就像捕獲命令的輸出一樣,使用下面的語法:

result = `func1`  #func1函式中的所有輸出都將定向到result變數。請看下面的例子:

 

5.如果你覺得上面的都懂了,那恭喜你,你已經有相當的功底了,我們繼續往下看。

   如何在函式中使用變數:

A.  我們可以通過引數傳遞給函式傳遞變數,就像給指令碼傳遞引數一樣,函式中使用引數也和指令碼中一樣,我們可以使用$1,$2,$3...得到引數值,可以通過$#得到引數個數,可以通過$*或[email protected]得到所有的引數內容。我們通過下面的例子來理解:

B. 學會使用全域性變數與區域性變數:

    B1.你可以在指令碼的任何地方定義全域性變數,包括函式中,使用變數定義的語法即可:

         variable=variable_value

    B2.任何在函式內部使用的變數你都可以定義為區域性變數,使用下面的語法即可:

         local  local_variable=variable_value

使用區域性定義建立的區域性變數只能在定義的函式內使用。我們看下面的例子:

C.如何給函式傳遞陣列引數,這是需要藝術的。

   C1.如果你像傳遞單個引數那樣給指令碼傳遞陣列,那麼他將無法執行。看下面的例子:

C2.解決這個問題的方法是,我們可以把陣列拆開成每個值,然後作為函式的引數值傳遞給函式,最後在函式內部我們把它再組合成陣列使用。也許你覺得這個根本就是個笨的辦法。但我們還是可以試試,看下面的例子:

我們再看一個使用陣列的例子,最好是練習它:

C3.如何返回一個數組,我們還是借用上面傳遞類似的方法,請看下面的例子:

6.函式的遞迴操作,這種迭代操作一般都是基於一種存在情況,並且這種情況有特定的值。看下面的例子:

7.最後跟大家一起分享的是,建立自己的libary簡化自己的指令碼編寫。

   大家可以把自己經常使用的一些函式編寫到一個固定的指令碼中,然後在需要此中的函式時就先引用這個檔案即可。

請用下面的語法引用:

   ../mylibary

示例:

以上是我學習的一些筆記,希望跟大家一起分享探討。

相關推薦

no