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本身解释执行。

这个是最完美的解释!

最新文章

  1. python脚本基础总结
  2. ImageView
  3. bootstrap-dropdown
  4. Activity启动方式
  5. windows服务名称不是单个单词的如何启动?
  6. 【转】php利用mkdir创建多级目录
  7. yum源万能
  8. 配置单节点伪分布式Hadoop
  9. qt 与mysql建立交互式连接
  10. Debian耳机声音问题
  11. 使用更清晰DebugLog开发和调试工具
  12. 10.1 ES6 的新增特性以及简单语法
  13. YII1 增、删、改、查数据库操作
  14. unity5.x中的关节和布料
  15. Apache Flink 漫谈系列
  16. thinkphp生成的验证码不显示问题解决
  17. 使用JS伪造Post请求
  18. spark集群构建
  19. SSL虚拟主机安全方案
  20. Oracle 提示符

热门文章

  1. CSS---基础外部样式表
  2. 条款13:以对象管理资源(use objects to manage resources)
  3. terminology(术语)
  4. 洛谷2016 战略游戏 (0/1状态的普通树形Dp)
  5. STM32F407 外部中断 个人笔记
  6. POJ-1061青蛙的约会,扩展欧几里德求逆元!
  7. iOS-runtime-objc_setAssociatedObject(关联对象以及传值)
  8. HDU 4821 字符串hash
  9. zju 3209 dancing links 求取最小行数
  10. SPOJ DCEPC11I