便利な関数を使おう

便利な関数を使おう

関数の定義

書式:関数の定義

関数を定義する方法は以下の2種類があります。関数名に「()」を付けることで定義できます。
※頭につける「function」は省略可能です。

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

書式:関数の呼び出し

呼び出す際には、呼び出したい関数名を指定します。

関数名

簡単な例を見てみましょう。

function_example.sh

#!/bin/bash

print () {
    echo おはよう
}

print
print

実行結果

[user01@localhost ~]$ bash function_example.sh
おはよう
おはよう

処理の流れを整理すると次の通りです

関数に引数を渡す

関数に渡す情報のことを「引数」と呼びます。
引数は、関数の処理内で変数と同じように扱います(参照されます)ので、引数の値は、関数の実行結果、動作に影響を与えます。
電子レンジを関数に、電子レンジの中に入れるものを引数に例えていただくとわかりやすいかもしれません。
電子レンジの中に入れるものによって、出来上がるものが異なるからです。

引数を使った関数の書式

書式:引数を指定して関数を実行する

引数を指定するためには、関数を呼び出す際に、関数名の横に引数を指定します。

関数名 引数

書式:引数の参照

関数内で引数を参照するためには、スクリプト内で下記の通り、番号で指定します。
参照する際に使用する番号は、引数を複数指定した場合に、各引数を識別するためのものであり、
実行時に指定した引数を、左から順番に数えたものになります。

$1 ~ $9

arguments_example.sh

#!/bin/bash

print () {
    echo $1
}

print こんにちは
print こんばんは

実行結果

[user01@localhost ~]$ bash arguments_example.sh
こんにちは
こんばんは

関数の戻り値

プログラミングには関数から返って来る情報のことを「戻り値」と呼びます。
しかし、シェルスクリプトの関数には、「戻り値」という概念が存在していません。
returnコマンドなどを使って、テクニカルに戻り値のようなものを扱うことができますが、
returnコマンドで指定した値は、関数の終了ステータスとなるだけで、一般的な戻り値としては、機能していません。

戻り値を使った関数の書式

書式:戻り値を疑似的に指定する方法

戻り値を疑似的に指定するためには、return文を使用します。

return $1 ~ $9

書式:戻り値を疑似的に参照する方法

echo $?

return_example.sh

#!/bin/bash

print () {
    return $1
}

print 5
echo 関数から戻り値が届きました![$?]

実行結果

[user01@localhost ~]$ bash return_example.sh
関数から戻り値が届きました![5]


NEXT>> 変数の範囲