eval 命令允许你对参数进行求值。他是Shell 内置命令,通常不会已单独命令的形式存在。
示例:
#!/bin/sh
foo=10
x=foo
y='$'$x
echo $y
输出结果为 $foo
#!/bin/sh
foo=10
x=foo
eval y='$'$x
echo $y
输出结果为:10
eval会对后面的命令进行两遍扫描,如果第一遍扫描后,命令是个普通命令,则执行此命令;如果命令中含有变量的间接引用,则保证间接引用的语义。也就是说,eval命令将会首先扫描命令行进行所有的置换,然后再执行该命令。因此,eval命令适用于那些一次扫描无法实现其功能的变量。