eval
is
part of POSIX. Its an interface which can be a shell built-in.
Its described in the "POSIX Programmer's Manual": http://www.unix.com/man-page/posix/1posix/eval/
eval - construct command by concatenating arguments
It will take an argument and construct a command of it, which will be executed by the shell. This is the example of the manpage:
1) foo=10 x=foo
2) y='$'$x
3) echo $y
4) $foo
5) eval y='$'$x
6) echo $y
7) 10
-
In the first line you define
$foo
with
the value '10' and $x
with
the value 'foo'. -
Now define
$y
,
which consists of the string '$foo'. The dollar sign must be escaped with '$'. -
To check the result,
echo
$y
. -
The result will be the string '$foo'
-
Now we repeat the assignment with
eval
.
It will first evaluate $x
to
the string 'foo'. Now we have the statement y=$foo
which
will get evaluated to y=10
. -
The result of
echo
$y
is now the value '10'.
This is a common function in many languages, e.g. Perl and JavaScript. Have a look at perldoc eval for more examples: http://perldoc.perl.org/functions/eval.html
eval
is a built-in, not a function. In practice, built-ins behave a lot like functions that don't have an in-language definition, but not quite (as becomes apparent if you are twisted enough to define a function calledeval
). – Gilles Oct 23 '11 at 1:17來源:http://unix.stackexchange.com/questions/23111/what-is-the-eval-command-in-bash