Unix / Linux – シェル関数

スポンサーリンク

本当にわからないとこがあった場合一人では解決できません。
『teratail』とはエンジニア特化型のQ&Aサイトです。 すべてのエンジニアさんが抱えている悩みを共有して 解決するための質問サイトです
無料なのでまずは登録して使ってみてください。メールアドレスだけで登録可能です ----------------------------------------------------------------------------------------

この章では、シェル関数について詳しく説明します。関数を使用すると、スクリプトの全体的な機能をより小さな論理サブセクションに分割し、必要に応じて個々のタスクを実行することができるようになります。

関数を使用して繰り返しタスクを実行することは、コードの再利用を作成する優れた方法です。これは、現代のオブジェクト指向プログラミングの原則の重要な部分です。

シェル関数は、他のプログラミング言語のサブルーチン、プロシージャ、および関数に似ています。

関数の作成


関数を宣言するには、次の構文を使用します。

function_name () { 
   list of commands
}

関数の名前はfunction_nameで決定でき、それはあなたのスクリプトのどこかから呼び出すために使うものです。関数名の後にはかっこを続け、その後に中括弧で囲んだコマンドのリストを続ける必要があります。

以下の例は、

#!/bin/sh

# Define your function here
Hello () {
   echo "Hello World"
}

# Invoke your function
Hello

実行すると、次の出力が表示されます。

$./test.sh
Hello World

パラメータを関数に渡す


関数を呼び出すときにパラメータを受け入れる関数を定義することができます。これらのパラメータは$ 1$ 2などで表されます。

以下は、2つのパラメータKENとYOKOを渡し、関数内でこれらのパラメータを取得して出力する例です。

#!/bin/sh

# Define your function here
Hello () {
   echo "Hello World $1 $2"
}

# Invoke your function
Hello KEN YOKO

実行時には、次の結果が表示されます。

$./test.sh
Hello World KEN YOKO

関数からの戻り値


関数の中からexitコマンドを実行すると、関数の実行を終了させるだけでなく、その関数を呼び出したシェルプログラムも終了させることができます。

代わりに関数の実行を終了するだけの場合、定義された関数から出る方法があります。

状況に基づいて、次のような構文を持つreturnコマンドを使用して、関数から任意の値を返すことができます。

return code

ここでコードはあなたがここで選ぶものであれば何でも構いませんが、明らかにスクリプト全体の中で意味のあるものや有用なものを選ぶべきです。


次の関数は値1を返します。

#!/bin/sh

# Define your function here
Hello () {
   echo "Hello World $1 $2"
   return 10
}

# Invoke your function
Hello Zara Ali

# Capture value returnd by last command
ret=$?

echo "Return value is $ret"

実行時には、次の結果が表示されます。

$./test.sh
Hello World Zara Ali
Return value is 10

入れ子関数


関数のより興味深い特徴の1つは、自分自身と他の関数を呼び出すことができることです。自己を呼び出す関数は再帰関数と呼ばれます

次の例は、2つの関数のネストを示しています。

#!/bin/sh

# Calling one function from another
number_one () {
   echo "This is the first function speaking..."
   number_two
}

number_two () {
   echo "This is now the second function speaking..."
}

# Calling function one.
number_one

実行時には、次の結果が表示されます。

This is the first function speaking...
This is now the second function speaking...

プロンプトからの関数呼び出し


.profile内によく使われる関数の定義を入れることができます。これらの定義は、ログインするたびに使用でき、コマンドプロンプトで使用できます。

別の方法として、定義ファイルをtest.shなどのファイルにグループ化し、現在のシェルでファイルを実行するには、次のように入力します。

$. test.sh

これは、test.sh内で定義された関数を次のように読み込んで現在のシェルに定義させるという効果があります。

$ number_one
This is the first function speaking...
This is now the second function speaking...
$

シェルから関数の定義を削除するには、unsetコマンドと.fオプションを使用します。このコマンドは、シェルの変数の定義を削除するためにも使用されます。

次のページ

前のページ

スポンサーリンク

プログラミングは独学からは挫折の可能性が高いです。まずは無料体験ができる
コードキャンプが本当におすすめ。無料体験でわからないところを聞きましょう。
転職補助つき。カリキュラム終了後に転職紹介をしてくれます。