eval是bash shell的内建命令,可以通过参考man builtin页面关于eval得到更多的信息。
eval命令将会首先扫描后面的命令进行所有的替换,然后再执行后面的命令。
例子:
[root@rhel6164 ~]# test1=hello
[root@rhel6164 ~]# test2=1
[root@rhel6164 ~]# echo $test$test2 #直接打印变量test和test2,因为test没有定义,默认是空的,所以输出就只有test2的值
1
[root@rhel6164 ~]# eval echo $test$test2
1
<pre name="code" class="plain">#原本想用eval来进行变量替换,然后再打印变量的值,但是变量替换时从左边开始的,当替换到$test的时候,因为其没有定义,就是为空,然后结果页只打印了test2的值
[root@rhel6164 ~]# eval echo \$test$test2 hello
#用转义字符转义了第一个dollar符合,当eval进行变量替换的时候,就把第一个dollar符号当成了一般的字符,然后就进行替换test2为1,eval命令处理完了,
就相当于echo $test1命令了