bash builtin eval

1 在开始执行eval后面的命令之前eval主要做了哪些事情

1.1 去掉反斜杠的quoting

比如$ac_optarg,会变成$ac_optarg。

1.2 去掉单引号的quoting

比如:

a=10

b=a //这里只是给b赋值为a,并没有扩展a。

eval y='$'$b

-->10

首先进行一次扩展,y=$a,然后执行这条命令。

2 总结一下

eval首先进行一次扩展,只是参数的每个部分扩展一次,然后执行扩展后的命令。

或者,同make的eval一样,首先进行一次扩展,然后扩展后得到的text当成是bash shell脚本的动态部分,在脚本运行的时候,由bash本身解释执行。

这个是最完美的解释!

原文地址:https://www.cnblogs.com/hustdc/p/7470116.html