Bash スクリプトはプレーン テキスト ファイルです。このファイルには、段階的に実行するためのさまざまなコマンドが含まれています。これらのコマンドはコマンド ラインに直接書き込むこともできますが、再利用性を考慮すると、特定のタスクに関連するすべてのコマンドを 1 つのファイルに保存すると便利です。このファイルを使用して、要件に応じて一連のコマンドを 1 回以上実行できます。
この記事では、Bash スクリプト内での関数の使用について説明します。
プログラミングでは、関数はいくつかのタスクを実行するコードのブロックであり、タスクを実行するために複数回呼び出すことができます。これにより、プログラムにモジュール性が提供され、コードの長さが短縮されます。 Bash スクリプトでの関数の使用の最も単純な例は次のようになります。
スクリプトの例:
#!/bin/bash #It is a function myFunction () { echo Hello World from techcodeview.com } #function call myFunction> 出力:
char から int Java へ
Hello World from techcodeview.com>
上の例は、呼び出されたときに何かを出力する関数を示しています。したがって、Bash スクリプト内で関数を記述するための基本的な構文は次のようになります。
構文:
# for defining function_name(){ commands ..... } function_name # for calling> これに加えて、引数と戻り値を渡す関数を使用することもできます。それでは、それらについて説明しましょう。
引数を渡す関数
関数に引数またはパラメータを追加し、それを使用してデータを関数に渡すことで、関数がそれらのデータを処理できるようになります。 bash スクリプトでは、引数を渡す関数を記述するために次の構文を使用できます。
引数を渡す関数の構文:
#for defining function_name(){ ..... parameter_1 = parameter_2 = . . . parameter_n = $n .... commands ..... } #for calling function_name p1 p2 ....pn> 関数の呼び出し中に引数を直接渡すことができ、次のようにしてアクセスできます。 、 ….. $n 関数内で。より明確に理解するために例を見てみましょう。
引数を渡す関数の例:
アンキタデイブ
#!/bin/bash add_two_num(){ local sum=$((+)) echo sum of and is $sum } add_two_num 2 3> 引数を渡す関数の出力:
sum of 2 and 3 is 5>
上記は 2 つの数値を加算するスクリプトです。ここでは引数として 2 と 3 を指定しました。関数から と を使用してそれらにアクセスし、それらの合計を計算してターミナルに出力しました。以下は、スクリプト実行後のターミナル シェルの図です。
戻り値のある関数
関数の実行が完了すると、関数によって戻り値が生成され、呼び出し元のメソッドに返されます。戻り値を使用して、生成された結果、または 1 つの関数が正常に実行されたかどうかに関するステータス コードを共有できます。 Bash スクリプトでは、戻り値は $? 変数。
同じ例を以下に示します。
戻り値のある関数の例:
#!/bin/bash myfun(){ return 7 } myfun echo The return value is $?> 戻り値を含む関数の出力:
The return value is 7>
以下は、スクリプト実行後のターミナル シェルの出力です。
ここで、先ほどの 2 つの数値の合計をスクリプトに変更してみましょう。
変更されたコード:
Pythonでタプルを並べ替える
#!/bin/bash myfun(){ return $((+)) } add_two_num 2 3 echo The sum is $?> 変更されたコードの出力:
The sum is 5>
上記のコードは、Bash スクリプト関数でパラメーターと戻り値の両方を使用する例です。
以下は、スクリプト実行後のターミナル シェルの図です。
変数のスコープ
プログラムまたはスクリプト内のスコープとは、変数が存在する領域です。変数が関数内で宣言されている場合、それは通常ローカル変数であり、関数の外部で宣言されている場合、それはグローバル変数です。 bash スクリプトの場合、この概念は少し異なります。ここでは、変数が関数内に記述されているか、関数外に記述されているかに関係なく、デフォルトでグローバル変数になります。ローカル変数を作成したい場合は、キーワード local を使用する必要があります。
不要な混乱を避けるために、関数内では常にローカル変数を使用することがベスト プラクティスです。
同じ例を以下に示します。
変数のスコープの例:
アンドロイドを使ったimessageゲーム
#!/bin/bash var1='Apple' #global variable myfun(){ local var2='Banana' #local variable var3='Cherry' #global variable echo 'The name of first fruit is $var1' echo 'The name of second fruit is $var2' } myfun #calling function echo 'The name of first fruit is $var1' #trying to access local variable echo 'The name of second fruit is $var2' echo 'The name of third fruit is $var3'> 変数スコープの出力:
The name of first fruit is Apple The name of second fruit is Banana The name of first fruit is Apple The name of second fruit is The name of third fruit is Cherry>
上記の例では、var2 はローカル変数であるため、関数からアクセスしているときは正常に動作していますが、関数の外からアクセスしようとすると、出力に空の結果が返されます。
一方、プログラミング言語とは異なり、var3 は関数内で定義されているにもかかわらず、グローバル変数として機能し、関数の外部からアクセスできます。以下は、スクリプト実行後のターミナル シェルの図です。
コマンドのオーバーライド
コマンドと同じ名前の関数を持つことができます。これは、特定のオプションを指定してコマンドを実行したい場合、またはコマンドのカスタマイズされたエディションが必要な場合に役立ちます。
同じ例を以下に示します。
コマンドをオーバーライドする例:
#!/bin/bash #overriding command echo(){ builtin echo 'The name is : ' } echo 'Satyajit Ghosh'> オーバーライドコマンドの出力:
10の6乗
The name is : Satyajit Ghosh>
この例では、 エコー 指示。指定された文字列を出力する前に、文字列にさらに単語を追加してから出力します。以下は、スクリプト実行後のターミナル シェルの図です。