お兄ちゃん!
自作スクリプトの内容が
どんどん大きくなって
読むのも大変になってきたよ!
それは大変だね
今回はまとまった機能を分割する
「シェル関数(shell function)」を学ぼう!
以降、単に「関数(function)」と呼ぶよ
関数は以下のように定義するよ
function 関数名() {
処理
}
function
は省略可能なんだだからこのように書いても同じだよ関数名() {
処理
}
定義した関数はコマンドと同じように呼び出せるよ
関数名
処理のまとまりに意味のある名前を付けて呼び出せるのねこれだけでもスクリプトの中身を整理できそうだよ
関数も終了ステータスを返すよ関数内で最後に実行されたコマンドの終了ステータスが関数の終了ステータスになるんだ
終了ステータスの制御は難しそうだね…
exit
のように終わりたいタイミングで関数を終わらせて終了ステータスを返せないものかな?return
は関数を終了して終了ステータスを返すよ!return [終了ステータス]
exit
はシェルを終了するけどreturn
は関数を終了させるんだね!関数内では引数を表す特殊変数には関数が呼ばれたときの引数の値が入っているよ
関数でも引数を扱えるんだねもうほとんどコマンドと変わらないよ!
local
コマンドlocal
はシェル関数内のみ有効な変数を宣言するよその役割から関数の中でしか使えないよlocal [オプション]... [変数名[=値]]
変数の範囲がわかりやすくなるね!
シェルスクリプトは上から下へ書かれた順に実行されて行くんだなので関数定義の前に関数呼び出しをすると「そんなコマンドはない!」 と怒られるよ
関数定義は早いうちにしておいた方が良さそうだね!
関数定義はシェルスクリプト冒頭に書くのがおすすめだよ
今回は関数の使い方を学んだよ!まとまった処理に名前を付けてコマンドのように呼び出せるんだ!
関数はシェルスクリプト内でよく使われるけど通常のシェル上でも定義できるよあたかもそういうコマンドがあるかのように実行できるようになって便利なんだ