Yash マニュアル: return 組込みコマンド
Author: magicant
Description: Yash の return 組込みコマンドについて

# Return 組込みコマンド

Return 組込みコマンドは現在実行中の関数またはスクリプトの実行を終了します。

## 構文

- `return [-n] [終了ステータス]`

## 説明

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

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

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

## オプション

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

## オペランド

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

## 終了ステータス

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

## 補足

Return コマンドは特殊組込みコマンドです。

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

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

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