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

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

[[syntax]]
== 構文

- +eval [-i] [{{コマンド}}...]+

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

[[description]]
== 説明

Eval コマンドは、与えられたオペランドをシェルのコマンドとして解釈し、{zwsp}link:exec.html#environment[現在のコマンド実行環境]で実行します。

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

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

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

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

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

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

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

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

[[notes]]
== 補足

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

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

// vim: set filetype=asciidoc expandtab:
