linux shell 可以使用者定義函數,然後在shell腳本中可以随便調用。
shell中函數的定義格式如下:
說明:
1、可以帶function fun() 定義,也可以直接fun() 定義,不帶任何參數。
2、參數傳回,可以顯示加:return 傳回,如果不加,将以最後一條指令運作結果,作為傳回值。 return後跟數值n(0-255
下面的例子定義了一個函數并進行調用:
1
2
3
4
5
6
7
<code>#!/bin/bash</code>
<code>demoFun(){</code>
<code> </code><code>echo</code> <code>"這是我的第一個 shell 函數!"</code>
<code>}</code>
<code>echo</code> <code>"-----函數開始執行-----"</code>
<code>demoFun</code>
<code>echo</code> <code>"-----函數執行完畢-----"</code>
輸出結果:
下面定義一個帶有return語句的函數:
8
9
10
11
12
<code>funWithReturn(){</code>
<code> </code><code>echo</code> <code>"這個函數會對輸入的兩個數字進行相加運算..."</code>
<code> </code><code>echo</code> <code>"輸入第一個數字: "</code>
<code> </code><code>read</code> <code>aNum</code>
<code> </code><code>echo</code> <code>"輸入第二個數字: "</code>
<code> </code><code>read</code> <code>anotherNum</code>
<code> </code><code>echo</code> <code>"兩個數字分别為 $aNum 和 $anotherNum !"</code>
<code> </code><code>return</code> <code>$(($aNum+$anotherNum))</code>
<code>funWithReturn</code>
<code>echo</code> <code>"輸入的兩個數字之和為 $? !"</code>
輸出類似下面:
函數傳回值在調用該函數後通過 $? 來獲得。
注意:所有函數在使用前必須定義。這意味着必須将函數放在腳本開始部分,直至shell解釋器首次發現它時,才可以使用。調用函數僅使用其函數名即可。
在Shell中,調用函數時可以向其傳遞參數。在函數體内部,通過 $n 的形式來擷取參數的值,例如,$1表示第一個參數,$2表示第二個參數...
帶參數的函數示例:
<code>funWithParam(){</code>
<code> </code><code>echo</code> <code>"第一個參數為 $1 !"</code>
<code> </code><code>echo</code> <code>"第二個參數為 $2 !"</code>
<code> </code><code>echo</code> <code>"第十個參數為 $10 !"</code>
<code> </code><code>echo</code> <code>"第十個參數為 ${10} !"</code>
<code> </code><code>echo</code> <code>"第十一個參數為 ${11} !"</code>
<code> </code><code>echo</code> <code>"參數總數有 $# 個!"</code>
<code> </code><code>echo</code> <code>"作為一個字元串輸出所有參數 $* !"</code>
<code>funWithParam 1 2 3 4 5 6 7 8 9 34 73</code>
注意,$10 不能擷取第十個參數,擷取第十個參數需要${10}。當n>=10時,需要使用${n}來擷取參數。
另外,還有幾個特殊字元用來處理參數:
參數處理
說明
$#
傳遞到腳本的參數個數
$*
以一個單字元串顯示所有向腳本傳遞的參數
$$
腳本運作的目前程序ID号
$!
背景運作的最後一個程序的ID号
$@
與$*相同,但是使用時加引号,并在引号中傳回每個參數。
$-
顯示Shell使用的目前選項,與set指令功能相同。
$?
顯示最後指令的退出狀态。0表示沒有錯誤,其他任何值表明有錯誤。
本文轉自 獨孤環宇 51CTO部落格,原文連結:http://blog.51cto.com/snowtiger/1942033