LinuxShellスクリプト - 関数
要約:この論文は、Shell関数の定義および使用を検討しました。
定義された関数
シェルを再利用することができ、このコードは、事前によく書かれており、指定された場所に置かれ、あなたが直接検索を使用することができ、いくつかのスクリプトコードの性質の関数です。
関数の定義構文
次のようにShell関数の構文は定義されています。
1つの 関数関数名(){ 2 コマンド 3 リターン戻り値 4 }
各セクションの説明:
1つの 機能:シェルのキーワード、関数を定義するために設計されています。 2リターン:シェルのキーワード、特に関数で使用が値を返す、この部分は、あなたが書き込むことはできません書くことができます。
{} 関数その関数が呼び出されると呼ばれる部分囲まれ、コードが実際に機能体で実行されます。
関数定義単純化された文言
私は、ときに、関数の定義をキーワード関数を記述することはできません。
関数名(){ 2 コマンド 3 リターン戻り値 4 }
あなたがfunctionキーワードを記述する場合は、関数名の後に括弧を省略することができます:
1つの 関数関数名{ 2 コマンド 3 リターン戻り値 4 }
関数呼出し
そして、他のプログラミング言語が異なっていて、パラメータを定義Shell関数を示すものではありませ、パラメータがShique呼び出しを渡すことができ、それが受け取ったすべてのパラメータをパラメータ何を渡し。
シェルは、それ以降の呼び出しで定義されます、有効にすることができます定義し、呼び出しでフロントを定義することができ、呼び出すために限定されるものではありません。
パラメータを渡していない関数を呼び出します
あなたは、関数名に直接与えられたパラメータを渡さない場合:
1つの関数名
パラメータを渡す関数を呼び出し
パラメータが渡された場合、複数のパラメータの間のスペースで区切られました:
関数名パラメータ1パラメータ2パラメータ3
関数の戻り値
returnキーワード
関数が呼び出された後、ほとんどのプログラミング言語では、戻り値は、取得した関数本体のコードを実行した結果が、この結果は、return文によって返されています。
しかし、return文では、シェルは、関数の終了ステータスを示します:0の戻り値は、関数が成功する関数が間違って実行された場合、戻り値がゼロ以外であることを意味します。他の文の条件が成立するかどうかを決定するために関数の終了ステータスに基づいており、一方、もし。
関数のシェルの戻り値が0でのみ成功を示す0〜255の間の唯一の整数であり、他の値は失敗を示しています。
関数が失敗した場合、それはそのようなファイルオープン関数として、間違っていた、具体的内容を決定することが可能である、我々は1を指定することができ、ファイルが存在しない場合を示し、図2は、ファイルが戻り値(終了状態)に基づいて許可を読んだことがないことを示している、図3は、ファイルの種類をしませ表し。
関数本体内ノーリターン文の場合は、最後のコマンドの終了ステータスで、デフォルトの終了ステータスを、使用しています。より厳密な文言は次のようになります。
1リターン$?
どこ $? コマンドの終了ステータス、または関数の戻り値を取得するために使用される特別な変数です。
戻り値を取得します。
望ましい結果の機能を処理して、2つの解決策があります
1)グローバル変数を使用すると、結果はグローバル変数に割り当てられます。
2)関数内のエコーの使用、printfのコマンド出力、外部関数の使用 $() または `` 捕捉結果は。
使用例
1)グローバル変数戻り値の援助を取得します
このアプローチの欠点は、同時に我々は唯一の関数の名前を知っていれば、追加の関数定義は、グローバル変数を定義していますが、グローバル変数の名前を知らないということです、結果を得ることができません。
1#!/ binに/ bashの 2 和 = 0 3 機能doSum(){ 4 和 = $(($ 1 + $ 2 )) 5 リターン$? 6 } 7 場合 doSum 2 3 9 エコー " 和= $合計" 10 他 11 エコー " エラー" 12 Fiの
2)出力内のエコー機能を使用して
使用 $を() エコーの出力をキャプチャし、その結果を端末に出力されません。加えて、 1つの $() を使用することができる `` エコーを捕捉するために出力を。
1#!/ binに/ bashの 2 機能doSum(){ 3 エコー $(($ 1 + $ 2 )) 4 リターン$? 5 } 6 和 = $(doSum 2 3 ) 7 エコー " 和= $和"