【Shell】関数の定義:引数と戻り値の使い方

■関数の定義

関数とは、シェルスクリプトを作成する際、まとまった処理や何度も呼び出す処理をひとまとめにして、名前を定義することである。

以下の通り、関数の定義方法には3通りある。

・基本形

function 関数名()
{
    処理
}

・()を省略

function 関数名
{
    処理
}

・functionを省略

関数名()
{
    処理
}

なお、今回は3つ目のfunctionを省略した関数定義を使用する。

■基本的な関数定義

以下、10回繰り返しを行う関数を作成する。

▼サンプルコード

#!/bin/bash

# 処理を10回繰り返す関数
method_v1()
{
    for i in {0..9}
    do
        echo $i
    done
}

# 関数を実行
method_v1

注意!!
シェルスクリプトは上から下へ読み込みを行っていくため、関数を実行する前に、関数を定義する必要がある。

▼実行結果

0
1
2
3
4
5
6
7
8
9

■関数実行時に引数を取得する

関数を実行する際、他のプログラミング言語と同様に、シェルスクリプトでも、引数を設定することができる。

※ただし、関数名()の「()」の中に、引数を指定しない。

引数を指定・取得する場合は位置パラメータを使用する。

なお、位置パラメータについての参照先。

▼サンプルコード

#!/bin/bash

# 引数を取得する関数
method_v2()
{
    echo "引数1:"$1
    echo "引数2:"$2
    echo "引数の数:"$#

}

# 関数を実行
method_v2 aaa bbb

▼実行結果

引数1:aaa
引数2:bbb
引数の数:2

■関数実行後に戻り値を設定する

関数を実行した際、他のコマンドと同様に終了ステータスを返す。

関数のよび呼び出し側で「$?」を取得することで、関数内の処理が成功したかどうか判断できる。

▼サンプルコード

#!/bin/bash

# 戻り値を返す関数
method_v3()
{
    # 引数ありなし判定
    if [ "$1" = "" ]; then
        echo "引数なし"
        return 1
    else
        echo "引数あり"
        return 0
    fi

}

# 関数を実行(引数あり)
echo "引数ありで関数実行"
method_v3 aaa
echo "関数の終了ステータス:"$?

# 関数を実行(引数なし)
echo "引数なしで関数実行"
method_v3
echo "関数の終了ステータス:"$?

▼実行結果

引数ありで関数実行
引数あり
関数の終了ステータス:0
引数なしで関数実行
引数なし
関数の終了ステータス:1
タイトルとURLをコピーしました