- 论坛徽章:
- 0
|
我这两天学习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重组命令行的过程理解不正确,请大家一定多多指教!!! |
|