在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ Linux/ 函數(shù)
通信工具
信號(hào)和 Traps
文件管理
vi 編輯器使用向?qū)?/span>
替代
變量
環(huán)境
進(jìn)程管理
實(shí)用工具
引用機(jī)制
Manpage 幫助
文件系統(tǒng)基礎(chǔ)知識(shí)
系統(tǒng)日志
循環(huán)
正則表達(dá)式和 SED
目錄
函數(shù)
管道和過濾器
特殊變量
輸入/輸出重定向
系統(tǒng)性能
用戶管理
循環(huán)控制
決策
什么是 UNIX ?
數(shù)組
什么是 Shell 腳本
基本操作符
文件權(quán)限

函數(shù)

函數(shù)允許你將一個(gè)腳本的整體功能分解成更小的邏輯子部分,然后當(dāng)需要的時(shí)候可以被調(diào)用來執(zhí)行它們各自的任務(wù)。

使用函數(shù)來執(zhí)行重復(fù)性的任務(wù)是一個(gè)創(chuàng)建代碼重用的很好的方式來。代碼重用是現(xiàn)代面向?qū)ο缶幊痰脑瓌t的重要組成部分。

Shell 函數(shù)類似于其他編程語言中的子程序和函數(shù)。

創(chuàng)建函數(shù)

聲明一個(gè)函數(shù),只需使用以下語法:

    function_name () { 
       list of commands
    }

函數(shù)的名字是 function_name,在腳本的其它地方你可以用函數(shù)名調(diào)用它。函數(shù)名后必須加括號(hào),在其后加花括號(hào),其中包含了一系列的命令。

例子

以下是使用函數(shù)的簡(jiǎn)單例子:

    #!/bin/sh

    # Define your function here
    Hello () {
       echo "Hello World"
    }

    # Invoke your function
    Hello

當(dāng)你想執(zhí)行上面的腳本時(shí),它會(huì)產(chǎn)生以下結(jié)果:

    $./test.sh
    Hello World
    $

函數(shù)的參數(shù)傳遞

你可以定義一個(gè)函數(shù),在調(diào)用這些函數(shù)的時(shí)候可以接受傳遞的參數(shù)。這些參數(shù)可以由 $1,$2 等表示。

以下是一個(gè)例子,我們傳遞兩個(gè)參數(shù) ZaraAli ,然后我們?cè)诤瘮?shù)中捕獲和編譯這些參數(shù)。

    #!/bin/sh

    # Define your function here
    Hello () {
       echo "Hello World $1 $2"
    }

    # Invoke your function
    Hello Zara Ali

這將產(chǎn)生以下結(jié)果:

    $./test.sh
    Hello World Zara Ali
    $

函數(shù)返回值

如果你從一個(gè)函數(shù)內(nèi)部執(zhí)行一個(gè) exit 命令,不僅能終止函數(shù)的執(zhí)行,而且能夠終止調(diào)用該函數(shù)的 Shell 程序。

如果你只是想終止該函數(shù)的執(zhí)行,有一種方式可以跳出定義的函數(shù)。

根據(jù)實(shí)際情況,你可以使用 return 命令從你的函數(shù)返回任何值,其語法如下:

    return code

這里的 code 可以是你選擇的任何東西,但很明顯,考慮到將腳本作為一個(gè)整體,你應(yīng)該選擇有意義的或有用的東西。

例子

下面的函數(shù)返回一個(gè)值 1:

    #!/bin/sh

    # Define your function here
    Hello () {
       echo "Hello World $1 $2"
       return 10
    }

    # Invoke your function
    Hello Zara Ali

    # Capture value returnd by last command
    ret=$?

    echo "Return value is $ret"

這將產(chǎn)生以下結(jié)果:

    $./test.sh
    Hello World Zara Ali
    Return value is 10
    $

嵌套函數(shù)

函數(shù)更有趣的功能之一就是他們可以調(diào)用本身以及調(diào)用其他函數(shù)。調(diào)用自身的函數(shù)被稱為遞歸函數(shù)。

下面簡(jiǎn)單的例子演示了兩個(gè)函數(shù)的嵌套:

    #!/bin/sh

    # Calling one function from another
    number_one () {
       echo "This is the first function speaking..."
       number_two
    }

    number_two () {
       echo "This is now the second function speaking..."
    }

    # Calling function one.
    number_one

這將產(chǎn)生以下結(jié)果:

    This is the first function speaking...
    This is now the second function speaking...

從 Prompt 函數(shù)調(diào)用

你可以把常用函數(shù)的定義放置到文件 .profile 中,這樣當(dāng)你載入的時(shí)候可以得到它們并且在 prompt 命令中使用它們。

或者,你可以將多個(gè)函數(shù)定義在一個(gè)文件中,比如 test.sh,然后通過鍵入以下內(nèi)容當(dāng)前 Shell 中執(zhí)行該文件:

    $. test.sh

這樣做可以使 test.sh 內(nèi)定義的任何函數(shù)被讀入,定義到當(dāng)前 Shell ,如下:

    $ number_one
    This is the first function speaking...
    This is now the second function speaking...
    $

要從 Shell 刪除函數(shù)的定義,你可以使用帶 .f 選項(xiàng)的 unset 命令。這也是用來刪除 Shell 中一個(gè)變量的定義的命令。

    $unset .f function_name
上一篇:什么是 Shell 腳本下一篇:數(shù)組