在shell 脚本中经常能见到 eval 工具的使用,先前总是不能对其真正的理解,最近查看了一些资料,并做了几个测试的例子,现在终于搞清楚它的意思了。
它相当于 c 语言中的宏定义,当在一个赋值语句的前面加上 eval 时,它就会将后面表达式中以$ 开头的所有变量进行整体替换。
例如:
var1="abcd"
tmp=var
eval test="$"$var"1"
echo $test
那么就会在屏幕上显示出 :
abcd
语法:eval cmdLine
eval会对后面cmdLine进行两边扫描,如果第一遍扫描后cmdLine是一个普通命令,则执行此命令;
如果cmdLine中含有变量的间接引用,则保证间接引用的语义。