Latest web development tutorials

シェル関数

Linuxのシェルは、あなたが簡単にシェルスクリプトで呼び出すことができ、ユーザー定義関数にすることもできます。

次のように定義は、シェル関数をフォーマット:

[ function ] funname [()]

{

    action;

    [return int;]

}

説明:

  • 1は、()関数funを取ることができます任意のパラメータを指定せずに、()が定義されている直接の楽しみであると定義されます。
  • 2、リターンパラメータを表示することができますプラス:リターンリターンが、ない場合、結果は戻り値として、最後のコマンドが実行されます。 n個の戻り値(0〜255が続きます

次の例は、関数と呼び出しを定義します。

#!/bin/bash
# author:本教程
# url:www.w3big.com

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

出力:

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

return文を持つ関数の次の定義:

#!/bin/bash
# author:本教程
# url:www.w3big.com

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

次のような出力:

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

$?を通して、この関数を呼び出した後に関数の戻り値が得られます。

注:すべての機能は、使用する前に定義する必要があります。 この機能は、それが最初に発見された場合、それを使用することができるシェル・インタープリタまでスクリプトの先頭に配置しなければならないことを意味します。 のみ、その関数名を使用して関数を呼び出します。


関数の引数

シェルでは、関数が呼び出されたパラメータを渡すことができます。 内部関数本体では、例えば、最初の引数のための$ 1、2番目のパラメータの$ 2 $、nの形でパラメータの値を取得するために...

パラメータを持つ関数の例:

#!/bin/bash
# author:本教程
# url:www.w3big.com

funWithParam(){
    echo "第一个参数为 $1 !"
    echo "第二个参数为 $2 !"
    echo "第十个参数为 $10 !"
    echo "第十个参数为 ${10} !"
    echo "第十一个参数为 ${11} !"
    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はエラーがないことを示し、それ以外の値はエラーを示します。