免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: thinshootout
打印 上一主题 下一主题

关于shell的IFS [复制链接]

论坛徽章:
0
31 [报告]
发表于 2009-03-14 16:20 |只看该作者

回复 #30 wendaozhe 的帖子

我刚才说的也不对,编辑了一下

论坛徽章:
0
32 [报告]
发表于 2009-03-14 16:29 |只看该作者

回复 #29 ywlscpl 的帖子

肯定不会有了因为echo $A变成了echo ,$A被替换成了null了!

论坛徽章:
0
33 [报告]
发表于 2009-03-14 16:47 |只看该作者
原帖由 wendaozhe 于 2009-3-14 16:29 发表
肯定不会有了因为echo $A变成了echo ,$A被替换成了null了!


对啊,可你前面说的,我也不明白你的意思了

奉行先替换后重组的”原则“,先把$A替换(也就是什么都没有!),然后执A=B echo ,执行完这句A=B ,然后subshell依次执行下面的语句,echo $A,此时$A就应当是B了

论坛徽章:
0
34 [报告]
发表于 2009-03-14 16:49 |只看该作者
明白了,我讨论的是A=B echo $A

你说的是 A=B echo $A
             echo $A

论坛徽章:
0
35 [报告]
发表于 2009-03-14 16:50 |只看该作者

回复 #33 ywlscpl 的帖子

呵呵,要知道lz的script里有两个echo $A!

论坛徽章:
0
36 [报告]
发表于 2009-03-14 16:54 |只看该作者
你的疑问就是A=B echo $A这条语句中的A=B为什么没影响到当前shell,这个也是我一开始的疑问。

15楼的lululau解释
都说了"VAR=value comman"这样的形式是将VAR作为一个环境变量传给子进程
ABS上面说的

黑哥解释也是一个意思
bash man里面说得很清楚。

bash先标记命令行中命令名前的变量赋值,然后对后面的参数进行展开。A=B echo $A中的变量赋值只影响当前命令的执行环境,不影响当前shell的环境。

论坛徽章:
0
37 [报告]
发表于 2009-03-14 17:04 |只看该作者
这个是关于命令行处理流程的问题吧
整个就1个命令 再处理上$先被shell替换掉,到最后的一步执行整条命令
替换在赋值执行之前

对第2个echo为什么为空我也很不解
为什么 加上 echo $A后 A=B变成只影响当前命令环境不会影响shell环境了呢??

论坛徽章:
0
38 [报告]
发表于 2009-03-14 17:06 |只看该作者
因为在subshell中并没有产生新的进程,如果要我强行理解的话,那就是:var=value command这种形式只把变量给子进程,自己都不用!

论坛徽章:
0
39 [报告]
发表于 2009-03-14 17:14 |只看该作者
这个先收藏了先。。
现在的情况是知道了,但没有理解原理。为何这样。

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015年亚洲杯之朝鲜
日期:2015-03-13 22:47:33IT运维版块每日发帖之星
日期:2016-01-09 06:20:00IT运维版块每周发帖之星
日期:2016-03-07 16:27:44
40 [报告]
发表于 2009-03-14 17:17 |只看该作者
黑哥解释也是一个意思




首先,我说的和lululau的不同:没有子进程!

不是解析清楚了吗?

注意看贴啊。

再解析一遍:
A=B echo $A:
       bash先标记赋值"A=B",再展开$A(此时A为空),  所以没有输出。
       另外,A=B command 中的赋值只用于执行当前命令,在此即echo, 不影响当前shell环境。所以命令结束后,再执行echo $A(第二条命令)时,也没有输出"B"。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP