免费注册 查看新帖 |

Chinaunix

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

请各位解释一个基本问题:echo ;a;b带来的困惑! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-05-21 20:56 |只看该作者 |倒序浏览
我这两天学习shell13问,老老实实的看了前两篇。有几个问题把我头都搞痛了,希望大家拉我一把!
[root@addrsvr root]# x=";a;b"
[root@addrsvr root]# echo $x
;a;b
[root@addrsvr root]# echo ;a;b

-bash: a: command not found
-bash: b: command not found

我的理解是:在echo $x这个命令中,shell遇到$x,它认识$是一个meta字符,于是shell进行变量替换,将$x替换成了 ;a;b  ,然后重组命令行(不知我对 重组命令行 这个术语的理解是否正确,还望大家指导),变成了  echo ;a;b  这样的command line,执行这个命令得到结果 ;a;b  。
既然对$x进行变量替换后成了 ;a;b,然后把;a;b作为参数送给echo命令;那么我直接把 ;a;b作为参数送给echo命令,如上(echo ;a;b),为什么得到的结果却是错误提示:
-bash: a: command not found
-bash: b: command not found

问题的关键是:我知道;是shell的meta,作为命令间分隔符的作用,为什么echo $x 这个命令不报错呢?谁能告诉我shell对$x进行变量替换后,是以什么样的参数提交给echo命令的?

谢谢!可能我对shell重组命令行的过程理解不正确,请大家一定多多指教!!!

论坛徽章:
0
2 [报告]
发表于 2006-05-21 21:13 |只看该作者
[root@addrsvr root]# x=";a;b"
[root@addrsvr root]# echo $x
;a;b
這個被 shell 看作是字符
[root@addrsvr root]# echo ;a;b

-bash: a: command not found
-bash: b: command not found
這個是三個命令, ; 是shell 拿來分隔命令的

試試
echo;ls;who
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP