■関数の定義
関数とは、シェルスクリプトを作成する際、まとまった処理や何度も呼び出す処理をひとまとめにして、名前を定義することである。
以下の通り、関数の定義方法には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
コメント