¿Qué puedes hacer con el eval
? ¿dominio? ¿Por qué es útil? ¿Es algún tipo de función integrada en bash? No hay man
página para eso..
Respuesta aceptada:
eval
es parte de POSIX. Es una interfaz que puede ser un shell integrado.
Se describe en el “Manual del programador de POSIX”:http://www.unix.com/man-page/posix/1posix/eval/
eval - construct command by concatenating arguments
Tomará un argumento y construirá un comando del mismo, que será ejecutado por el shell. Este es el ejemplo de la página de manual:
1) foo=10 x=foo
2) y='$'$x
3) echo $y
4) $foo
5) eval y='$'$x
6) echo $y
7) 10
- En la primera línea, define
$foo
con el valor'10'
y$x
con el valor'foo'
. - Ahora define
$y
, que consta de la cadena'$foo'
. El signo de dólar debe escaparse
con'$'
. - Para verificar el resultado,
echo $y
. - El resultado será la cadena
'$foo'
- Ahora repetimos la tarea con
eval
. Primero evaluará$x
a la cadena'foo'
. Ahora tenemos la instruccióny=$foo
que será evaluado ay=10
. - El resultado de
echo $y
ahora es el valor'10'
.
Esta es una función común en muchos idiomas, p. Perl y JavaScript.
Eche un vistazo a perldoc eval para ver más ejemplos:http://perldoc.perl.org/functions/eval.html