免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2232 | 回复: 6
打印 上一主题 下一主题

shell 解释命令行的顺序 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-06-16 22:44 |只看该作者 |倒序浏览
《UNIX 超级工具》一书  第八章
8.05 命令行的评价(evaluation)
下面是C shell 解释命令行的顺序:
1. 历史替换
2. 分裂词(包括特殊字符)
3. 更新历史表
4. 解释单引号(') 和 双引号(")
5. 别名替换
6. 输入和输出的重定向(如 >  < 和 |)
7. 变量替换
8. 命令替换
9. 文件名扩展
(Bourne shell 的解释顺序本质上是一样的,除了它不执行历史替换和别名替换之外)

所以,下面的命令:
A=B  echo    $A

的执行过程应该是这样的:
1. 没有历史操作符, 因此不进行历史替换(Bourne shell 不执行这一步)
2. 分裂词,每碰到未加引号的空白字符就会产生一个新“词”。这些词是 A=B、echo、$A。
3. shell 将命令行放到历史列表中。(Bourne shell 不执行这一步)
4. 没有引号需要解释
5. 没有别名需要替换
6. 没有输入或输出重定向需要处理
7. shell注意到变量$A,并把它替换成空
8. shell寻找左单引号,执行左单引号中的任何命令,并且将命令的输出插入到命令行中。在本例中,没有这方面的事需要做。(如果左单引号内有通配符或者变量,那么在shell运行左单引号中的命令之前它们是不会被解释的)
9. shell寻找通配符。本例中没有,不需要处理
10. shell 执行 A=B, 执行 echo 。

论坛徽章:
0
2 [报告]
发表于 2009-06-16 22:50 |只看该作者

回复 #1 doublelook 的帖子

你在哪里买的书?  有电子版的吗? 给我发一下好不? chunqiangfire@163.com

论坛徽章:
0
3 [报告]
发表于 2009-06-16 22:54 |只看该作者
没电子书  是纸质的书

论坛徽章:
0
4 [报告]
发表于 2009-06-16 22:56 |只看该作者
在当当网上购的 新书 7.X 折

论坛徽章:
0
5 [报告]
发表于 2009-06-16 23:00 |只看该作者

回复 #4 doublelook 的帖子

不知道这本书怎么样,反正这一点讲解的非常好! 前两天这个问题大家讨论了好久。这里解释的很清楚哈

论坛徽章:
0
6 [报告]
发表于 2009-06-16 23:04 |只看该作者
我个人认为很好  而且是o'reilly 出的书, 但我英文功力不好,看不出翻译质量如何

论坛徽章:
0
7 [报告]
发表于 2009-06-16 23:12 |只看该作者
关于这个linuxsir里有篇介绍很不错
http://www.linuxsir.org/bbs/thread99465.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP