やってみる

アウトプットすべく己を導くためのブログ。その試行錯誤すらたれ流す。

Shellで関数の定義や呼出の順序について確認した

Shellを書くための基礎。

ソースコード

Main.sh

#!/bin/sh
function Main() {
    Sub1
    Sub2
}
function Sub1() {
    echo called Sub1.
}
function Sub2() {
    echo called Sub2.
}
Main

実行

bash Main.sh

背景

関数の定義順や呼出順について確認したい。

ソースコードは呼出元から順に見たほうが全体を把握できてわかりやすい。 しかし、C言語などでは先に定義しないと未定義エラーになる。 Shellではどうなのか確かめてみた。

関数の定義順

疑問:子関数から先に定義する必要があるか?
結論:ない。親関数を先に書いてもOK。

先に書いたほうが全体像を把握しやすくて良い。

呼出と定義順

疑問:関数呼出のとき、先に定義する必要があるか?
結論:ある。もし関数定義の前に呼びだそうとすると、以下のようなエラーが出る。

Main.sh: 行 2: Main: コマンドが見つかりません

後で定義しても参照できたほうが嬉しかった。 別解として関数定義を別ファイルにすることで実現できるはず。

所感

Windowsの.batより良い。