免费注册 查看新帖 |

Chinaunix

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

关于SHELL解释输入命令行的疑惑(依然求助) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-07-26 15:03 |只看该作者 |倒序浏览
今天遇到了一个疑惑的现象.
$a='1     2'
$echo "$(echo $a)"
1 2
$echo $(echo "$a")
1 2
$echo "$(echo "$a")"
1      2
前两个指令的结果没问题,最后一个的结果不懂啊.按照我的理解在shell扫描命令行时,会把<"$(echo "$a")">看成是<echo>的参数,那么在解释参数时发生了什么?另外从结果看<">配对给人的感觉怎么像<14>(第一个和第四个引号)是一对,<23>是一对.但我认为应该是<12>一对,<34>一对

任何帮助不胜感激

[ 本帖最后由 jarhead1 于 2007-7-26 15:31 编辑 ]

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
2 [报告]
发表于 2007-07-26 15:10 |只看该作者
跟IFS有关请读十三问, 另引号都是配对的

论坛徽章:
0
3 [报告]
发表于 2007-07-26 15:23 |只看该作者
谢谢寂寞大哥
IFS的问题我看过
关于第一个结果是因为$在shell的变量置换后被shell默认的IFS=$' \t\n'分割的原因导致的
第二个结果也是类似的情况,但变成了命令置换
但对于第三个结果我确实不太懂,这样说OK,如果是
$ echo "$^echo "$a"^"
$^ 1 2^
对于这结果我也理解
那么为什么echo "$(echo "$a")"的结果是1     2.结果给人的感觉$先被shell解释并在有引号的作用下跳过了分割,然后在$()下由于双引号的作用也跳过了分割,也就是说引号配对似乎没有按照顺序依次来配对的.

哎,也许就差那么一点点的提醒,就豁然开朗了.
请有知道的明示

[ 本帖最后由 jarhead1 于 2007-7-26 15:45 编辑 ]

论坛徽章:
0
4 [报告]
发表于 2007-07-26 15:52 |只看该作者
呵呵,这个我也十分不明白的
对于第二个
$echo $(echo "$a")
1 2
为什么会的到这样的结果呢?
括号里面的echo "$a" 得出来是什么呢?

论坛徽章:
0
5 [报告]
发表于 2007-07-26 16:26 |只看该作者
原帖由 jackwenghui 于 2007-7-26 15:52 发表
呵呵,这个我也十分不明白的
对于第二个
$echo $(echo "$a")
1 2
为什么会的到这样的结果呢?
括号里面的echo "$a" 得出来是什么呢?

########
在没有$()作用下是1    2,在$(echo "$a")下是1 2

论坛徽章:
0
6 [报告]
发表于 2007-07-27 10:34 |只看该作者
我想是不是可以这么解释
$(echo "$a" ) 其实最终显示了1       2
但是最外层的 echo  显示的时候空格被取消了!(我不知道这么说对不对,我是这么理解的。)
而echo "$(echo "$a")"这个在显示的时候,因为在外面有了""配对,保留了空格的原意。所以就可以显示1    2

论坛徽章:
8
摩羯座
日期:2014-11-26 18:59:452015亚冠之浦和红钻
日期:2015-06-23 19:10:532015亚冠之西悉尼流浪者
日期:2015-08-21 08:40:5815-16赛季CBA联赛之山东
日期:2016-01-31 18:25:0515-16赛季CBA联赛之四川
日期:2016-02-16 16:08:30程序设计版块每日发帖之星
日期:2016-06-29 06:20:002017金鸡报晓
日期:2017-01-10 15:19:5615-16赛季CBA联赛之佛山
日期:2017-02-27 20:41:19
7 [报告]
发表于 2007-07-27 11:05 |只看该作者
在shell解析命令行会进行两次词拆分
第一次用元字符
第二次发生在替代之后用IFS
有兴趣去翻翻精华帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP