Java などでは、関数の戻り値を返すのに return を指定しますが、シェルにおいては単純に”シェル関数を終了するコマンド”になると思います。
終了ステータス0 でシェル関数を終了する
一般的に終了ステータス0 は正常終了とみなされます。
return-example1.sh
func()
{
return 0
}
終了ステータス0 以外でシェル関数を終了する
一般的に終了ステータス0 以外は異常終了とみなされます。
return-example2.sh
func()
{
if [ -f "$1" ]; then
return 0 # 引数で指定したファイルが存在したため、正常終了
fi
return 1 # ファイルが存在しなかったため、異常終了
}
サブシェルでの return
サブシェル内で return コマンドを呼んだ場合、サブシェルを終了するが、シェル関数は終了しない。
return-example3.sh
func()
{
(
return 1 # サブシェルを抜ける(異常終了扱い)
)
echo $? # サブシェルでの終了ステータス"1"が得られる
return 0 # シェル関数はここまで実行される(正常終了扱い)
}