シェル関数


Linux シェルを使用すると、ユーザーは関数を定義でき、シェル スクリプトで自由に呼び出すことができます。

シェルでの関数の定義形式は次のとおりです:

[ function ] funname [()]

{

    action;

    [return int;]

}

説明:

  • 1. 関数 fun() で定義することも、パラメータを指定せずに fun() で直接定義することもできます。

  • 2. パラメータの戻り値を追加できます。追加しない場合は、最後のコマンドの実行結果が戻り値として使用されます。 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 !

関数の戻り値は、関数の呼び出し後に $? を介して取得されます。

注: すべての関数は、シェルが実行されるまでスクリプトの先頭に配置する必要があることを意味します。インタープリターが最初にそれを検出します。関数名を使用するだけで使用できます。


関数パラメーター

関数の本体内でパラメーターの値を取得できます。たとえば、 $n の形式は、 $1 が最初のパラメータを表し、 $2 が 2 番目のパラメータを表します...

パラメータを含む関数の例:

#!/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 番目のパラメータを取得できないことに注意してください。 n>=10 の場合、${n} を使用してパラメーターを取得する必要があります。さらに、パラメーターの処理にいくつかの特殊文字が使用されます。

パラメータ処理 説明 スクリプトに渡されるパラメータの数 スクリプトに渡されたすべてのパラメーターを単一の文字列として表示します 実行中のスクリプトの現在のプロセス ID 番号 バックグラウンドで実行されている最後のプロセスの ID 番号 $* と同じですが、引用符で使用され、各パラメータを引用符で囲んで返します。 シェルで使用されている現在のオプションを表示します。このオプションは set コマンドと同じ機能を持ちます。 最後のコマンドの終了ステータスを表示します。 0 はエラーがないことを示し、それ以外の値はエラーを示します。
$#
$*
$$
$!
$@
$-
$?