# Eval built-in

The eval built-in evaluates operands as commands.

## Syntax

- `eval [-i] [command…]`

The eval built-in requires that all options precede operands. Any command line arguments after the first operand are all treated as operands.

## Description

The eval parses operands as commands and executes them in the current command execution environment.

When executed without the `-i` (`--iteration`) option, all the operands are concatenated into one string (with a space inserted between each operand) and parsed/executed at once.

With the `-i` (`--iteration`) option, the built-in performs iterative execution: operands are parsed/executed one by one. If the continue built-in is executed with the `-i` (`--iteration`) option during the iterative execution, the execution of the current operand is aborted and the next operand is parsed/executed immediately. The break built-in with the `-i` (`--iteration`) option is similar but the remaining operands are not parsed/executed. The value of the `?` special parameter is saved before the iterative execution is started. The parameter value is restored to the saved one after each iteration.

## Options

`-i`
`--iteration`

  Perform iterative execution.

## Operands

command

  A string that is parsed and executed as commands.

## Exit status

The exit status is zero if no command was specified or command contained no actual command that can be executed. Otherwise, that is, if the eval built-in executed one or more commands, the exit status of the eval built-in is that of the last executed command.

## Notes

The eval built-in is a special built-in.

The POSIX standard defines no options for the eval built-in; the built-in accepts no options in the POSIXly-correct mode.