Bash で関数を作成して呼び出す方法のクイック ガイド。
関数は、何らかのアクションを実行するために使用される再利用可能なコードのブロックです。関数を使用すると、モジュール性が向上し、コードの高度な再利用が可能になります。
Bash には echo
などの組み込み関数がいくつか用意されています。 と read
ですが、独自の関数を作成することもできます。
Bash で関数を作成する
Bash で関数を作成するには、次の 2 つの方法があります。
1 つの方法は、関数名のみを使用することです。例:
functionName(){
// scope of function
}
コンパクト版:
functionName(){ echo "hello"; }
もう 1 つの方法は、function
を使用して関数を宣言することです。 キーワード:
function functionName {
// scope of function
}
コンパクト版:
function functionName { echo "hello"; }
()
が必要ないことに注意してください function
を使用する場合 関数を作成するためのキーワード。
Bash 関数に関する注意事項:
- 中括弧内のコード
{}
関数本体とスコープです - 関数を呼び出すときは、bash スクリプトのどこからでも関数名を使用します
- 関数は、使用する前に定義する必要があります
- コンパクト バージョンを使用する場合、最後のコマンドにはセミコロン
;
が必要です
例:
次のコードは、「Hello World」をコンソールに出力する関数を作成します。関数の名前は printHello です :
#!/bin/bash
printHello(){
echo "Hello World!"
}
Bash で関数を呼び出す
上記の関数をどのように呼び出すのでしょうか? bash スクリプトで行う必要があるのは、関数の名前を記述することだけで、それが呼び出されます。
例:
#!/bin/bash
printHello(){
echo "Hello World!"
}
# Call printHello function from anywhere in the script by writing the name
printHello
出力:
"Hello World"
引数を渡す
上記の関数 printHello()
パラメータはありません。これを呼び出すたびに、「Hello World」という出力が得られます。しかし、より一般的な関数を作成したい場合はどうなるでしょうか?たとえば、何らかの引数を指定して関数を呼び出すと、送信した内容が出力されます。
これには 2 つの方法があります。
まず printHello()
を変更します 渡された引数を出力する関数:
例:
#!/bin/bash
printAny(){
echo "Hello " $1
}
printAny World
printAny DevQa
printAny I love coding!
出力:
Hello World
Hello DevQA
Hello I
3 番目の print ステートメント printAny I love coding!
に注目してください。 「こんにちは、私」のみを出力しました。
これは、関数が 1 つのパラメーター $1
のみを受け取るように設計されているためです。 . 「コーディングが好き!」という言葉。は実際には 3 つのパラメーターです。
すべてを印刷したい場合は、テキストを引用符で囲む必要があります
例:
#!/bin/bash
printAny(){
echo "Hello " $1
}
printAny "I love coding!"
出力:
Hello I love coding
別の例として、数字も渡すことができます:
#!/bin/bash
add() {
result=$(($1 + $2))
echo "Result is: $result"
}
add 1 2
出力:
Result is: 3
戻り値
Bash 関数は値を返すこともできます。
例:
#!/bin/bash
add() {
result=$(($1 + $2))
}
add 1 2
echo "The sum is: "$result
出力:
The sum is: 3
関数から値を返すもう 1 つの方法は、必要に応じて使用できる変数に結果を代入することです。
例:
#!/bin/bash
add () {
local result=$(($1 + $2))
echo "$result"
}
result="$(add 1 2)"
echo "The sum is: "$result
出力:
The sum is: 3