【bash】シェルスクリプトで関数を作成する方法 

bashのシェルスクリプトで関数を作成する方法です。

関数とは

関数とは簡単に説明すると「複数の処理をまとめたもの」です。

関数を作成するメリット

同じ処理を何度も行うのであれば、関数を作成してそれを呼び出すことで、何度も同じコード記述する必要がなくなり記述ミスも少なくなります。
また、修正等の変更が必要な場合も関数を修正するだけで済むので、修正箇所も少なくなります。

関数の作成方法

関数を作成するための書式は下記のとおりです。

function 関数名() {
    処理
    return 値
}

functionは省略することもできます。

関数名() {
    処理
    return 値
}

「return 値」について

「return 値」では関数の終了ステータスを設定します。

終了ステータスは下記のように設定するのが一般的です。

異常終了の終了ステータスは、処理結果の種類によって複数の終了ステータスを設定することもあります。

  • 正常終了 0
  • 異常終了 0以外

returnは省略できる

「return 値」は省略することができます。

省略した場合は、「関数内で最後に処理されたコマンド」の終了ステータスが「関数の終了ステータス」となります。

関数を呼び出す方法

関数を呼び出す方法は関数名を記述するだけでよく、関数作成時につけた「()」は必要ありません。

関数名

「Hello World !!」と表示する「hello_world」という関数を作成して、それを呼び出してみます。

#!/bin/bash

hello_world() {
	echo "Hello World !!"
}

hello_world

スクリプトを実行すると、問題なく関数が呼び出されて「Hello World !!」と表示されました。

$ bash func_2.sh 
Hello World !!

関数名のあとに引数を記述することもできます。

関数名 引数1 引数2

足し算を行う関数を作成して、関数を呼び出す際に引数として「5」と「10」を指定します。

#!/bin/bash

tashizan() {
	expr $1 + $2
}

tashizan 5 10     # 引数として5と10を指定

引数として指定した「5」と「10」を足し算した結果が表示されました。

$ bash func_3.sh 
15

終了ステータスによる条件分岐

「return 値」で設定した終了ステータスは、正常終了や異常終了の判別以外に、処理の実行結果による条件分岐の判別用として使用することができます。

終了ステータスの使用例

下記のスクリプトは、入力した数字に応じて終了ステータスを下記のように設定していて、終了ステータスによりcaseでの条件分岐をさせてメッセージを表示させています。

  • 100より小さい場合 0
  • 100以上の場合 1
  • 数字以外が入力された場合 2

終了ステータスは「$?」で取得することができます。

#!/bin/bash

checknum() {
	echo -n "Enter Number: "
	read NUM

	if [ $NUM -lt 100 ] 2> /dev/null ; then 
		return 0
	elif [ $NUM -ge 100 ] 2> /dev/null ; then
		return 1
	else
		return 2
	fi
}

checknum
case $? in
	0) echo "OK" ;;
	1) echo "Error" ;;
	2) echo "Not Number" ;;
esac

実際に実行した結果です。

$ bash func_1.sh 
Enter Number: 1 
OK     # 100より小さいので「OK」と表示される
$ bash func_1.sh 
Enter Number: 110
Error  # 100以上なので「Error」と表示される
$ bash func_1.sh
Enter Number: test
Not Number  # 数字意外なので「Not Number」と表示される

シェアする