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
示例:
以上是我學習的一些筆記,希望跟大家一起分享探討。