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

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

[[syntax]]
== 構文

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

[[description]]
== 説明

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

- link:exec.html#function[関数]の実行中の場合は、その関数の実行を終了します。
- link:_dot.html[ドットコマンド]でファイルを開いてコマンドを実行している途中の場合は、そのファイルの読み込み・実行を終了します。
- link:invoke.html#init[シェルの初期化スクリプト]を実行中の場合は、そのスクリプトの実行を終了します。
- link:_trap.html[トラップ]を実行中の場合は、そのトラップの実行を終了します。(ただし他のシグナルに関するトラップの実行が控えている場合はそれらは通常通り実行されます。)
- これ以外の場合は、(link:interact.html[対話モード]のときを除いて) シェルは終了します。

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

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

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

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

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

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

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

[[notes]]
== 補足

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

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

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

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

// vim: set filetype=asciidoc expandtab:
