Shell 函數


linux shell 可以使用者定義函數,然後在shell腳本中可以隨便呼叫。

shell中函數的定義格式如下:

[ function ] funname [()]

{

    action;

    [return int;]

}

說明:

  • 1、可以帶function fun()  定義,也可以直接fun( ) 定義,不帶任何參數。

  • 2、參數返回,可以顯示加:return 返回,如果不加,將以最後一條命令運行結果,作為返回值。 return後面跟著數值n(0-255

下面的範例定義了一個函數並進行呼叫:

#!/bin/bash
# author:php中文网
# url:www.php.cn

demoFun(){
    echo "这是我的第一个 shell 函数!"
}
echo "-----函数开始执行-----"
demoFun
echo "-----函数执行完毕-----"

輸出結果:

-----函数开始执行-----
这是我的第一个 shell 函数!
-----函数执行完毕-----

下定義一個帶有return語句的函數:

#!/bin/bash
# author:php中文网
# url:www.php.cn

funWithReturn(){
    echo "这个函数会对输入的两个数字进行相加运算..."
    echo "输入第一个数字: "
    read aNum
    echo "输入第二个数字: "
    read anotherNum
    echo "两个数字分别为 $aNum 和 $anotherNum !"
    return $(($aNum+$anotherNum))
}
funWithReturn
echo "输入的两个数字之和为 $? !"

輸出類似下面:

这个函数会对输入的两个数字进行相加运算...
输入第一个数字: 
1
输入第二个数字: 
2
两个数字分别为 1 和 2 !
输入的两个数字之和为 3 !

函數傳回值在呼叫函數後透過$? 來獲得。在使用前必須定義。函數參數

在Shell中,呼叫函數時可以向其傳遞參數。個參數...


帶參數的函數範例:

#!/bin/bash
# author:php中文网
# url:www.php.cn

funWithParam(){
    echo "第一个参数为  !"
    echo "第二个参数为  !"
    echo "第十个参数为  !"
    echo "第十个参数为  !"
    echo "第十一个参数为  !"
    echo "参数总数有 $# 个!"
    echo "作为一个字符串输出所有参数 $* !"
}
funWithParam 1 2 3 4 5 6 7 8 9 34 73

輸出結果:

第一个参数为 1 !
第二个参数为 2 !
第十个参数为 10 !
第十个参数为 34 !
第十一个参数为 73 !
参数总数有 11 个!
作为一个字符串输出所有参数 1 2 3 4 5 6 7 8 9 34 73 !

注意,$10 不能取得第十個參數,取得第十個參數需要${10}。

參數處理

說明

$# 傳遞到腳本的參數數量 以一個單一字串顯示所有向腳本傳遞的參數 腳本運行的目前進程ID號碼 後台運行的最後一個程序的ID號碼 與$*相同,但使用時加引號,並在引號中傳回每個參數。 顯示Shell使用的目前選項,與set指令功能相同。 顯示最後指令的退出狀態。 0表示沒有錯誤,其他任何值表示有錯誤。 #
$*
# $$
$!
# $@
$-
$?