# Eval 組込みコマンド

Eval 組込みコマンドはオペランドをコマンドとして解釈して実行します。

## 構文

- `eval [-i] [コマンド…]`

Eval コマンドでは、​POSIX 準拠モードであるかどうかにかかわらずオプションはオペランドより先に全て指定しなければなりません。最初のオペランドより後にあるコマンドライン引数は全てオペランドとして解釈します。

## 説明

Eval コマンドは、与えられたオペランドをシェルのコマンドとして解釈し、​現在のコマンド実行環境で実行します。

`-i` (`--iteration`) オプションが指定されていないときは、コマンドをまとめて一度に解釈・実行します。複数のオペランドがある場合は、それらを順に連結して一つにしてから解釈・実行します (連結の際、各オペランド間に空白文字を一つずつ区切りとして挿入します)。

`-i` (`--iteration`) オプションが指定されているときは、オペランドを順に一つずつ解釈・実行します。これを反復実行といいます。反復実行の途中で continue コマンドを `-i` オプション付きで実行した場合、コマンドの実行は中断され、eval コマンドに与えられた次のオペランドの解釈・実行に移ります。反復実行の途中で break コマンドを `-i` オプション付きで実行した場合、反復実行は中断され、この eval コマンドの実行は終了します。​特殊パラメータ `?` の値が反復実行の開始前に保存されます。オペランドを一つ解釈・実行するたびに特殊パラメータ `?` の値は保存された値にもどります。

## オプション

`-i`
`--iteration`

  与えられたコマンドを順に反復実行します。

## オペランド

コマンド

  コマンドとして解釈・実行する文字列です。

## 終了ステータス

オペランドが一つもない場合またはオペランドの中にコマンドが一つも含まれていなかった場合、終了ステータスは 0 です。コマンドが一つ以上解釈・実行された場合、最後に実行したコマンドの終了ステータスが eval コマンドの終了ステータスになります。

## 補足

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

POSIX にはオプションに関する規定はありません。よってオプションは POSIX 準拠モードでは使えません。