eval 的含义 (copied)

来源:互联网 发布:企查查同类软件 编辑:程序博客网 时间:2024/05/16 14:47



up vote20down voteaccepted

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=foo2) y='$'$x3) echo $y4) $foo5) eval y='$'$x6) echo $y7) 10
  1. In the first line you define $foo with the value '10' and $x with the value 'foo'.
  2. Now define $y, which consists of the string '$foo'. The dollar sign must be escaped with '$'.
  3. To check the result, echo $y.
  4. The result will be the string '$foo'
  5. 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.
  6. 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

shareimprove this answer
 
 
In shell terminology, 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 called eval). –  Gilles Oct 23 '11 at 1:17
 
thx, fixed that :-) –  echox Oct 25 '11 at 14:14




来源:http://unix.stackexchange.com/questions/23111/what-is-the-eval-command-in-bash
0 0
原创粉丝点击