= Return 組込みコマンド
:encoding: UTF-8
:lang: ja
//:title: Yash マニュアル - Return 組込みコマンド

dfn:[Return 組込みコマンド]は現在実行中のlink:exec.html#function[関数]またはスクリプトの実行を終了します。

[[syntax]]
== 構文

- +return [-n] [{{終了ステータス}}]+

[[description]]
== 説明

+-n+ (+--no-return+) オプションを付けずに return コマンドを実行すると、以下のうち当てはまる動作を行います:

- link:exec.html#function[関数]の実行中の場合は、その関数の実行を終了します。
- link:_dot.html[ドットコマンド]でファイルを開いてコマンドを実行している途中の場合は、そのファイルの読み込み・実行を終了します。
- link:_eval.html[Eval コマンド]でコマンドを実行している途中の場合は、そのコマンドの実行を終了します。
- これ以外の場合は、(link:interact.html[対話モード]のときを除いて) シェルは終了します。

+-n+ (+--no-return+) オプションを付けて return コマンドを実行すると、return コマンドはただ単にオペランドで指定されている終了ステータスを返します。

[[options]]
== オプション

+-n+::
+--no-return+::
コマンドの実行を中断しません。

[[operands]]
== オペランド

{{終了ステータス}}::
Return コマンドの終了ステータスを指定する 0 以上の自然数です。
+
このオペランドが与えられていない場合は、return コマンドの直前に実行されたコマンドの終了ステータスを用います (ただしlink:_trap.html[トラップ]を実行中の場合はトラップに入る直前のコマンドの終了ステータス)。

[[exitstatus]]
== 終了ステータス

Return コマンドの終了ステータスはオペランドで与えられた値です。Return コマンドの終了ステータスは return コマンドが終了する関数・ドットコマンド・eval コマンド・シェル自身の終了ステータスにもなります。

[[notes]]
== 補足

Return コマンドはlink:builtin.html#types[特殊組込みコマンド]です。

POSIX では、{{終了ステータス}}の値は 0 以上 256 未満でなければならないとしています。Yash では拡張として 256 以上の値も受け付けるようになっています。

POSIX では関数あるいはドットコマンドの実行中以外における return コマンドの動作を定めていません。

POSIX には +-n+ (+--no-return+) オプションに関する規定はありません。よってこのオプションは link:posix.html[POSIX 準拠モード]では使えません。

// vim: set filetype=asciidoc expandtab:
