天天看點

shell--9、Shell 函數

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&gt;=10時,需要使用${n}來擷取參數。

另外,還有幾個特殊字元用來處理參數:

參數處理

說明

$#

傳遞到腳本的參數個數

$*

以一個單字元串顯示所有向腳本傳遞的參數

$$

腳本運作的目前程序ID号

$!

背景運作的最後一個程序的ID号

$@

與$*相同,但是使用時加引号,并在引号中傳回每個參數。

$-

顯示Shell使用的目前選項,與set指令功能相同。

$?

顯示最後指令的退出狀态。0表示沒有錯誤,其他任何值表明有錯誤。

 本文轉自 獨孤環宇 51CTO部落格,原文連結:http://blog.51cto.com/snowtiger/1942033

繼續閱讀