99re热视频这里只精品,久久久天堂国产精品女人,国产av一区二区三区,久久久精品成人免费看片,99久久精品免费看国产一区二区三区

Bash 函數

2020-09-30 09:32 更新

函數可以有效減少您重復編寫程序段的工作量,可隨時重復調用。

函數聲明

  1. 首選常用格式,以函數名稱開頭。
    function_name() {
    commands
    }

  1. 以 Function 開頭,后接函數名。
    function function_name() {
    commands
    }
  2. 兩種格式的單行壓縮,請仔細對照。
    function_name() {commands;}
    function function_name() {commands;}

    注:
    - 請仔細觀察空格,嚴格遵守語法格式。
    - commands是函數主體,即命令集。
    - 使用單行壓縮函數時,;必須跟隨函數主體中的最后一個命令。
    - 您最好始終保持功能性名稱的描述性,以方便您在封裝完畢之后調用。

示例:

#!/bin/bash


W3Cschool(){
 echo "Welcome to W3Cschool"
}


W3Cschool

執(zhí)行后得到以下結果:

Welcome to W3Cschool

變量作用域

在 Bash 中,在默認情況下所有變量都定義為全局變量,即使在函數內部聲明也是如此。

您可以使用local關鍵字在函數內部聲明局部變量,該變量只能夠在該函數內部使用。同其他編程語言一樣,這意味著您可以聲明相同名稱的全局變量。

#!/bin/bash


str1="abc"
str2="bcd"


fun(){
    local str1="123"
    str2="234"
    echo "Inside function:str1_value is ${str1},str2_value is ${str2}."
}


echo "Before executing function:str1_value is ${str1},str2_value is ${str2}."


fun


echo "After executing function:str1_value is ${str1},str2_value is ${str2}."

執(zhí)行后得到以下結果:

Before executing function:str1_value is abc,str2_value is bcd.
Inside function:str1_value is 123,str2_value is 234.
After executing function:str1_value is abc,str2_value is 234.

注:

  • 由執(zhí)行結果得出。
    1. 在變量名相同的情況下,局部變量的優(yōu)先級在函數內部高于全局變量??梢岳斫鉃榫徒瓌t。
    2. 全局變量可以在函數內部更改它的值。

返回值

在 Bash 函數中,其返回值是執(zhí)行的最后一個語句的狀態(tài)。1-255(十進制)范圍內表示失敗,除此之外表示成功。

  1. 您可以使用return語句指定返回狀態(tài),并將其分配給$?。該語句會終止函數的調用。如下所示:

    #!/bin/bash


    fun(){
        echo "result"
        return 66
    }


    fun
    echo $?

執(zhí)行后得到以下結果:

    result
    66

  1. 若您想要從函數中返回任意實際的值,最簡單的選擇是將函數的執(zhí)行結果分配給一個全局變量,如下所示:

    #!/bin/bash


    fun(){
        fun_result="value"
    }


    fun
    echo $fun_result

執(zhí)行后得到以下結果:

    value

  1. 還有一個更好的選擇是將值發(fā)送到 stdout 再打印輸出,如下所示:

    #!/bin/bash


    fun(){
        local fun_result="value"
        echo "$fun_result"
    }


    fun
    echo $fun_result

執(zhí)行后得到以下結果:

    value

注:
- 利用 $()機制將函數執(zhí)行結果分配給變量fun_result,以此保存函數的執(zhí)行結果。

參數傳遞

若您想要將任意數量的參數傳遞給 Bash 函數,只需要將它們放在調用的函數名后面,以空格分隔,以" "將參數轉義。

注:
- 參數傳遞的順序位為 $1、$2···$n,在傳參時應嚴謹的根據需要排序以達到您所期望的效果。
- $#保存?zhèn)鬟f給函數的函數的位置參數或數量。
- $*$@保存?zhèn)鬟f給參數的所有位置參數或參數。

示例:

#!/bin/bash


fun(){
    echo "Welcome to $1"
}


fun "W3Cschool"

執(zhí)行后得到以下結果:

Welcome to W3Cschool
以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號